<?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>71063</bug_id>
          
          <creation_ts>2011-10-27 14:24:56 -0700</creation_ts>
          <short_desc>HashMap&lt;&gt;::add should return a more descriptive object</short_desc>
          <delta_ts>2012-03-29 11:49: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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>ap</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mjs</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>491950</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-27 14:24:56 -0700</bug_when>
    <thetext>HashMap&lt;&gt;::add returns a pair of HashMap iterator and a boolean but the semantics of this return value is totally unclear in its call sites.

We end up code like:

pair&lt;EventListenerHashMap::iterator, bool&gt; result = m_hashMap-&gt;add(eventType, 0);
if (result.second)
    result.first-&gt;second = new EventListenerVector;

We should create some struct for this purpose so that semantics is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531499</commentid>
    <comment_count>1</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-01-06 16:22:30 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; We end up code like:
&gt; 
&gt; pair&lt;EventListenerHashMap::iterator, bool&gt; result = m_hashMap-&gt;add(eventType, 0);
&gt; if (result.second)
&gt;     result.first-&gt;second = new EventListenerVector;

What about have the following?

EventListenerHashMap::AddResult result = m_hashMap-&gt;add(eventType, 0);
if (result.isNewKey)
    result.iterator-&gt;second = new EventListenerVector;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531518</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-06 16:45:38 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; We end up code like:
&gt; &gt; 
&gt; &gt; pair&lt;EventListenerHashMap::iterator, bool&gt; result = m_hashMap-&gt;add(eventType, 0);
&gt; &gt; if (result.second)
&gt; &gt;     result.first-&gt;second = new EventListenerVector;
&gt; 
&gt; What about have the following?
&gt; 
&gt; EventListenerHashMap::AddResult result = m_hashMap-&gt;add(eventType, 0);
&gt; if (result.isNewKey)
&gt;     result.iterator-&gt;second = new EventListenerVector;

Yes, that&apos;ll be an improvement. We should probably improve the interface of iterator as well so that it&apos;ll be something like:

if (result.isNewKey)
    result.iterator-&gt;value = new EventListenerVector;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589561</commentid>
    <comment_count>3</comment_count>
      <attachid>134195</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-27 18:46:21 -0700</bug_when>
    <thetext>Created attachment 134195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589572</commentid>
    <comment_count>4</comment_count>
      <attachid>134195</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-27 19:01:16 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        the iterator type, there&apos;s a need for its own AddResult type instead of a simple

Is there any other benefit that a better readability?

&gt; Source/WTF/wtf/HashTable.h:335
&gt; +            iterator iter;

not sure if iter is a good name. We usually use it no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589585</commentid>
    <comment_count>5</comment_count>
      <attachid>134195</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-27 19:07:33 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

Attachment 134195 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12140886</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589586</commentid>
    <comment_count>6</comment_count>
      <attachid>134195</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-27 19:07:43 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

Attachment 134195 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12140883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589589</commentid>
    <comment_count>7</comment_count>
      <attachid>134195</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-27 19:08:37 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

Attachment 134195 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12148750</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589597</commentid>
    <comment_count>8</comment_count>
      <attachid>134195</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-27 19:22:37 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

Attachment 134195 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12143899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589607</commentid>
    <comment_count>9</comment_count>
      <attachid>134195</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 19:39:48 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

Attachment 134195 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12148762</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589916</commentid>
    <comment_count>10</comment_count>
      <attachid>134195</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-28 06:40:49 -0700</bug_when>
    <thetext>Comment on attachment 134195
Patch

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

I&apos;ll upload a new version fixing the EWS results.

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        the iterator type, there&apos;s a need for its own AddResult type instead of a simple
&gt; 
&gt; Is there any other benefit that a better readability?

No. As the WTF/ChangeLog pointed out, this change&apos;s goal is to improve readability. In practice, this is just a specialized pair.

&gt;&gt; Source/WTF/wtf/HashTable.h:335
&gt;&gt; +            iterator iter;
&gt; 
&gt; not sure if iter is a good name. We usually use it no?

I prefer iter, I would even prefer iterator. I will give it a try here. I think &apos;it&apos; works better as a local variable with a small scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590174</commentid>
    <comment_count>11</comment_count>
      <attachid>134345</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-28 11:17:44 -0700</bug_when>
    <thetext>Created attachment 134345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590190</commentid>
    <comment_count>12</comment_count>
      <attachid>134350</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-28 11:31:27 -0700</bug_when>
    <thetext>Created attachment 134350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590221</commentid>
    <comment_count>13</comment_count>
      <attachid>134350</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 11:56:54 -0700</bug_when>
    <thetext>Comment on attachment 134350
Patch

Attachment 134350 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12151342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590226</commentid>
    <comment_count>14</comment_count>
      <attachid>134350</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-28 12:02:45 -0700</bug_when>
    <thetext>Comment on attachment 134350
Patch

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

&gt; Source/JavaScriptCore/API/JSCallbackObject.h:92
&gt; -            m_propertyMap.add(propertyName.impl(), empty).first-&gt;second.set(globalData, owner, value);
&gt; +            m_propertyMap.add(propertyName.impl(), empty).iter-&gt;second.set(globalData, owner, value);

Can we add key() and value() to AddResult so that we can avoid using first/second?
In the long term, we should also add specialized pair for iterators.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:972
&gt; -    if (result.second) // new entry
&gt; +    IdentifierMap::AddResult result = m_identifierMap.add(rep, m_codeBlock-&gt;numberOfIdentifiers());
&gt; +    if (result.isNewKey)

Maybe we should call it isNewEntry instead of isNewKey?

&gt; Source/JavaScriptCore/runtime/WeakGCMap.h:-59
&gt; -
&gt;  public:
&gt; -

Do we really want to remove these blank lines?

&gt; Source/WTF/wtf/ListHashSet.h:88
&gt; +        struct AddResult {
&gt; +            AddResult(iterator iter, bool isNewKey) : iter(iter), isNewKey(isNewKey) { }
&gt; +            iterator iter;
&gt; +            bool isNewKey;
&gt; +        };

It&apos;s not great that we have to define multiple versions of AddResult. Can we templatize this class and share across hash classes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590312</commentid>
    <comment_count>15</comment_count>
      <attachid>134350</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 12:55:29 -0700</bug_when>
    <thetext>Comment on attachment 134350
Patch

Attachment 134350 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12157196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590322</commentid>
    <comment_count>16</comment_count>
      <attachid>134350</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 13:08:05 -0700</bug_when>
    <thetext>Comment on attachment 134350
Patch

Attachment 134350 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12159247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590353</commentid>
    <comment_count>17</comment_count>
      <attachid>134383</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-28 13:32:19 -0700</bug_when>
    <thetext>Created attachment 134383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590365</commentid>
    <comment_count>18</comment_count>
      <attachid>134350</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-28 13:40:57 -0700</bug_when>
    <thetext>Comment on attachment 134350
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSCallbackObject.h:92
&gt;&gt; +            m_propertyMap.add(propertyName.impl(), empty).iter-&gt;second.set(globalData, owner, value);
&gt; 
&gt; Can we add key() and value() to AddResult so that we can avoid using first/second?
&gt; In the long term, we should also add specialized pair for iterators.

We can, but I&apos;d rather not do it right now. Let&apos;s try first add specialized pair for iterators. If we manage to get that, we might not want to have key() since will cause potential confusion with iterator::key (which is not a function). If it happens that we want the shortcuts anyway, we can add them after.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:972
&gt;&gt; +    if (result.isNewKey)
&gt; 
&gt; Maybe we should call it isNewEntry instead of isNewKey?

Done.

&gt;&gt; Source/JavaScriptCore/runtime/WeakGCMap.h:-59
&gt;&gt; -
&gt; 
&gt; Do we really want to remove these blank lines?

Fixed.

&gt;&gt; Source/WTF/wtf/ListHashSet.h:88
&gt;&gt; +        };
&gt; 
&gt; It&apos;s not great that we have to define multiple versions of AddResult. Can we templatize this class and share across hash classes?

Good idea. The new patch implements this. Since AddResult was moved outside HashTable, we can use &apos;iterator&apos; instead of &apos;iter&apos; too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590410</commentid>
    <comment_count>19</comment_count>
      <attachid>134383</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 14:08:29 -0700</bug_when>
    <thetext>Comment on attachment 134383
Patch

Attachment 134383 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12156307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590561</commentid>
    <comment_count>20</comment_count>
      <attachid>134383</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 16:08:42 -0700</bug_when>
    <thetext>Comment on attachment 134383
Patch

Attachment 134383 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12153495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590563</commentid>
    <comment_count>21</comment_count>
      <attachid>134435</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-28 16:15:30 -0700</bug_when>
    <thetext>Created attachment 134435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590572</commentid>
    <comment_count>22</comment_count>
      <attachid>134435</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-28 16:21:56 -0700</bug_when>
    <thetext>Comment on attachment 134435
Patch

Thanks for the patch! New code looks great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590602</commentid>
    <comment_count>23</comment_count>
      <attachid>134435</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-28 16:53:42 -0700</bug_when>
    <thetext>Comment on attachment 134435
Patch

Attachment 134435 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12157332</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591094</commentid>
    <comment_count>24</comment_count>
      <attachid>134556</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-29 05:53:11 -0700</bug_when>
    <thetext>Created attachment 134556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591102</commentid>
    <comment_count>25</comment_count>
      <attachid>134558</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-29 06:14:49 -0700</bug_when>
    <thetext>Created attachment 134558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591142</commentid>
    <comment_count>26</comment_count>
      <attachid>134558</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-29 06:55:39 -0700</bug_when>
    <thetext>Comment on attachment 134558
Patch

Attachment 134558 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12193301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591207</commentid>
    <comment_count>27</comment_count>
      <attachid>134592</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-29 08:22:05 -0700</bug_when>
    <thetext>Created attachment 134592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591249</commentid>
    <comment_count>28</comment_count>
      <attachid>134599</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-29 09:25:09 -0700</bug_when>
    <thetext>Created attachment 134599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591276</commentid>
    <comment_count>29</comment_count>
      <attachid>134599</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-29 10:07:18 -0700</bug_when>
    <thetext>Comment on attachment 134599
Patch

Attachment 134599 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12212026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591277</commentid>
    <comment_count>30</comment_count>
      <attachid>134610</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-29 10:11:40 -0700</bug_when>
    <thetext>Created attachment 134610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591395</commentid>
    <comment_count>31</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-03-29 11:49:38 -0700</bug_when>
    <thetext>Committed r112555: &lt;http://trac.webkit.org/changeset/112555&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134195</attachid>
            <date>2012-03-27 18:46:21 -0700</date>
            <delta_ts>2012-03-28 11:17:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120327224621.patch</filename>
            <type>text/plain</type>
            <size>154306</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YzcxNzYyNDNlODE4ZDY0MDZjYjE1ZGJmMTQxNDRjNGY4YjQ0MDczLi5iNDE1NmFiYzNmNTQ4Yjcx
Zjg4YzBmYjBiYzIwMDQyN2NkYmE2ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAxMi0wMy0yNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSBpbnN0ZWFkIG9mIGEgc2ltcGxlCisgICAgICAgIHR5cGVkZWYuCisKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERh
dGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExv
YWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFy
YW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpT
Qzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9u
YXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZh
bHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6CisgICAgICAgICogcnVu
dGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdlYWtHQ01hcCk6CisgICAgICAgIChKU0M6Oldl
YWtHQ01hcDo6QWRkUmVzdWx0OjpBZGRSZXN1bHQpOgorICAgICAgICAoQWRkUmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDTWFwOjphZGQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVl
Tm9kZS5oOgorICAgICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwog
MjAxMi0wMy0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERG
RyBPU1IgZXhpdCBzaG91bGQgbm90IGdlbmVyYXRlIGFuIGV4aXQgZm9yIHZhcmlhYmxlcyBvZiBp
bmxpbmVlcyBpZiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNzNiMThlMGEzODY2YTI0OTAzNGI1MzMwNTg2MzM1NzAxNmI1
MjE2Yy4uMWEzODczOTRlYmM5YTU0YjUzNDIzMzFkODNjNDUzZDk2Y2E1ODY2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxMi0wMy0yNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIEhhc2hUYWJsZTw+OjphZGQoKSBhbmQg
ZGVyaXZhdGUgZnVuY3Rpb25zIHJldHVybiBhbiBBZGRSZXN1bHQgc3RydWN0IGluc3RlYWQKKyAg
ICAgICAgb2YgYSBwYWlyLiBUaGlzIHN0cnVjdCBjb250YWlucyBjb250YWlucyAnaXRlcicgYW5k
ICdpc05ld0tleScgbWVtYmVycywgdGhhdCBhcmUKKyAgICAgICAgbW9yZSByZWFkYWJsZSBhdCBj
YWxsc2l0ZXMgdGhhbiBwcmV2aW91cyAnZmlyc3QnIGFuZCAnc2Vjb25kJy4KKworICAgICAgICAq
IHd0Zi9IYXNoQ291bnRlZFNldC5oOgorICAgICAgICAoSGFzaENvdW50ZWRTZXQpOgorICAgICAg
ICAoV1RGOjo6OmFkZCk6CisgICAgICAgICogd3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKEhhc2hN
YXApOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6OjpzZXQpOgorICAgICAgICAqIHd0
Zi9IYXNoU2V0Lmg6CisgICAgICAgIChIYXNoU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgor
ICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEY6
Okhhc2hUYWJsZTo6QWRkUmVzdWx0OjpBZGRSZXN1bHQpOgorICAgICAgICAoQWRkUmVzdWx0KToK
KyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6YWRkKToKKyAg
ICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZFBhc3NpbmdIYXNoQ29kZSk6
CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0
OjpBZGRSZXN1bHQ6OkFkZFJlc3VsdCk6CisgICAgICAgIChBZGRSZXN1bHQpOgorICAgICAgICAo
TGlzdEhhc2hTZXQpOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAgICAgIChXVEY6Ojo6aW5z
ZXJ0QmVmb3JlKToKKyAgICAgICAgKiB3dGYvUmVmUHRySGFzaE1hcC5oOgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKFdURjo6OjpzZXQpOgorICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAg
ICAgICAoV1RGOjpTcGVjdHJ1bTo6YWRkKToKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5j
cHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXJUYWJsZTo6YWRkKToKKyAgICAgICAgKiB3dGYv
V1RGVGhyZWFkRGF0YS5oOgorICAgICAgICAoSWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKiB3
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjphZGRUb1N0cmluZ1RhYmxl
KToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZSk6CisKIDIwMTItMDMt
MjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2V0IGVvbC1z
dHlsZTogbmF0aXZlIG9uIFdURi5zbG4gcGVyIFJ5YW4gU2xlZXZpJ3MgcmVxdWVzdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1OWY3MDlhODg2YzVmNTkxNzVlZmIzZDhjYjYwMDMwNDAwOTliYzlmLi42MzdkMmM1
NDJjNmM4YjE2ODY4OTg1Y2EzMTRiMWRlNjdlMWYzOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUxIEBACisyMDEyLTAzLTI3ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlv
Lm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxk
IHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5z
dGVhZCBvZiBhIHBhaXIuIE5vIG5ldyB0ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmFjcXVpcmVMb2Nr
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1
Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAo
V2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6
c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OndyaXRlKToKKyAgICAgICAgKiBicmlkZ2UvSWRlbnRpZmllclJlcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJZGVudGlmaWVyUmVwOjpnZXQpOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgIChPYmplY3RNYXA6OmFkZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dVbmltcGxlbWVu
dGVkUHJvcGVydHlJRCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0YSk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2Vs
ZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0
b3I6OmdldEZvbnREYXRhKToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9udEZhY2U6OmdldEZvbnREYXRhKToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWVQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRl
bnRpZmllclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29s
b3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZSk6Cisg
ICAgICAgICogZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmFkaW9CdXR0b25Hcm91cDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkNoZWNrZWRSYWRpb0J1
dHRvbnM6OmFkZEJ1dHRvbik6CisgICAgICAgICogZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25B
Y2N1bXVsYXRpb25Sb3V0ZXI6OmluY3JlbWVudFNjb3BpbmdMZXZlbCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aW5kb3dOYW1lZEl0
ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldENTU0NhbnZhc0VsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEl0ZW1zKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5x
dWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1
ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50
UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9y
ZGVyZWRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjphZGQp
OgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZHVtcFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxl
bWVudHNCeVRhZ05hbWVOUyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0
aW9uKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpRdWFsaWZpZWROYW1lOjppbml0KToKKyAgICAgICAgKiBkb20vU3BhY2VTcGxpdFN0cmluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRF
bGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6YXBwZW5kKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVBhdGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2Vs
ZWN0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck9iamVjdDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0Ojpz
ZXRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheSk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3Jv
dXApOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9QYWdlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpwYWdlR3JvdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRWaXNpdGVkTGluayk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgICogcGFnZS9Ub3VjaEFkanVzdG1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlU3VidGFyZ2V0
TGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkZCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgIChIVFRQSGVhZGVyTWFwKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkKToKKyAgICAg
ICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
bkRhdGFiYXNlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmxvYWRQ
ZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSk6CisgICAgICAgICogcGx1Z2lucy93aW4vUGx1Z2luRGF0
YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmdldFBsdWdp
blBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRQZXJjZW50SGVpZ2h0RGVzY2Vu
ZGFudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6c2V0
UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OnNldEl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6U3RvcmFnZU1hcDo6aW1wb3J0SXRlbSk6CisgICAgICAgICogc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50
ZXJuYWwpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6RnVuSWQ6OmV2YWx1YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlvblBhdGg6OmV2YWx1YXRlKToKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OlVuaW9uOjpldmFsdWF0ZSk6CisKIDIwMTItMDMtMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVpbmZvcmNlIEdlb2xvY2F0aW9uIHRvIHByZXZl
bnQgYWNjaWRlbnRhbCBsZWFrIG9mIHRoZSB1c2VyIHBvc2l0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDEw
OTRkZDJmZjA4Nzg4MTY1YzRiNmRjZGQzMzhmNTY5YzE1MzVhNi4uZjlkN2UyYTgyMTFlM2NjZjBh
NzgyMTE0ODI5MGM4MWZkZDllMDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEy
LTAzLTI3ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1v
cmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBh
aXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBT
aGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpNdXRhYmxlRGlj
dGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6TXV0YWJsZURpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZXNzYWdlRGVjb2Rlcjo6YmFzZURlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRk
QmFja0ZvcndhcmRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlBhZ2VH
cm91cCk6CisKIDIwMTItMDMtMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBQbHVnLWlucyB1c2luZyB0aGUgQ29yZSBBbmltYXRpb24gZHJhd2luZyBt
b2RlbCBzaG91bGQgd29yayB3aGVuIGhvc3RpbmcgdGhlIGxheWVyIHRyZWUgaW4gdGhlIHdpbmRv
dyBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgK
aW5kZXggNjEzZTUzOGJjNzVkYjM2OWY3ZGZmN2I2Nzk4OTJjYjcwMmIzMjEzNi4uYzViZjFhNmY0
MjU5ODViOGU1OGFlMDUzN2EzYjYyZjhiZWJiZWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IEpTQ2Fs
bGJhY2tPYmplY3REYXRhIDogV2Vha0hhbmRsZU93bmVyIHsKICAgICAgICAgdm9pZCBzZXRQcml2
YXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBlbXB0eTsKLSAgICAgICAgICAgIG1fcHJv
cGVydHlNYXAuYWRkKHByb3BlcnR5TmFtZS5pbXBsKCksIGVtcHR5KS5maXJzdC0+c2Vjb25kLnNl
dChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAgICAgICAgICAgbV9wcm9wZXJ0eU1hcC5h
ZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXItPnNlY29uZC5zZXQoZ2xvYmFsRGF0
YSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBkZWxl
dGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggNWMyNDlhYmFmNjVlYmJhODky
ZjlmNTMwMzM0YzVkYmMwZDk1Yjk5ZC4uM2QzZTdkNTA2ZTViOWM1OTE1MGRhNGI1ODdjZDZhNTJi
ZTQxY2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVm
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC0x
NjQsNyArMTY0LDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29u
dGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBPcGFxdWVKU0MKIAogT3BhcXVlSlNDbGFzc0Nv
bnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhl
Yy0+Z2xvYmFsRGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFkZCh0aGlzLCBudWxscHRyKS5maXJz
dC0+c2Vjb25kOworICAgIE93blB0cjxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFxdWVKU0NsYXNzRGF0YS5hZGQodGhpcywgbnVs
bHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlmICghY29udGV4dERhdGEpCiAgICAgICAgIGNvbnRl
eHREYXRhID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMpKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCA0YTZmNDY1M2VhYjg5MmZjNmRhMGRiOTNjYjQ5Y2IxNTcxYTZhZGZiLi4wNTMxMTY0
OGNiZWUyYWRhZGE0ZTg1YTRhYjU5ZTZlNGYxODBkZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MjAwLDEwICsyMDAsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQsIFJlZ2lzdGUKIHsKICAgICBpbnQgaW5k
ZXggPSBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCk7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdF
bnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7Ci0gICAgcGFpcjxTeW1ib2xU
YWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50Lmlt
cGwoKSwgbmV3RW50cnkpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3lt
Ym9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAKLSAgICBpZiAoIXJlc3Vs
dC5zZWNvbmQpIHsKLSAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0LmZpcnN0LT5zZWNv
bmQuZ2V0SW5kZXgoKSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgcjAg
PSAmcmVnaXN0ZXJGb3IocmVzdWx0Lml0ZXItPnNlY29uZC5nZXRJbmRleCgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjE1LDkgKzIxNSw5IEBAIGludCBCeXRlY29kZUdl
bmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29u
c3RhbnQpCiB7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7CiAgICAgU3lt
Ym9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7
Ci0gICAgcGFpcjxTeW1ib2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRh
YmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlmICghcmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRleCgpOworICAg
IFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQu
aW1wbCgpLCBuZXdFbnRyeSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIGlu
ZGV4ID0gcmVzdWx0Lml0ZXItPnNlY29uZC5nZXRJbmRleCgpOwogICAgIHJldHVybiBpbmRleDsK
IH0KIApAQCAtOTY4LDI0ICs5NjgsMjQgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQKIHVuc2ln
bmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5pbXBsKCk7Ci0gICAgcGFpcjxJZGVu
dGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pZGVudGlmaWVyTWFwLmFkZChy
ZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwotICAgIGlmIChyZXN1bHQu
c2Vjb25kKSAvLyBuZXcgZW50cnkKKyAgICBJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZp
ZXJzKCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpCiAgICAgICAgIG1fY29kZUJsb2NrLT5h
ZGRJZGVudGlmaWVyKElkZW50aWZpZXIobV9nbG9iYWxEYXRhLCByZXApKTsKIAotICAgIHJldHVy
biByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsK
IH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUoSlNW
YWx1ZSB2KQogewogICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50T2Zmc2V0OwogCi0gICAg
cGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9qc1ZhbHVlTWFwLmFk
ZChKU1ZhbHVlOjplbmNvZGUodiksIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKLSAgICBpZiAocmVz
dWx0LnNlY29uZCkgeworICAgIEpTVmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2pzVmFs
dWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2KSwgbV9uZXh0Q29uc3RhbnRPZmZzZXQpOworICAg
IGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgbV9jb25zdGFudFBvb2xSZWdpc3RlcnMu
YXBwZW5kKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9uZXh0Q29uc3RhbnRPZmZzZXQp
OwogICAgICAgICArK21fbmV4dENvbnN0YW50T2Zmc2V0OwogICAgICAgICBtX2NvZGVCbG9jay0+
YWRkQ29uc3RhbnQoSlNWYWx1ZSh2KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGluZGV4ID0gcmVz
dWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIGluZGV4ID0gcmVzdWx0Lml0ZXItPnNlY29uZDsK
IAogICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogfQpAQCAtMTEz
Miw3ICsxMTMyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJl
Z2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikKICAgICAvLyB3b3JrIGNvcnJlY3RseSB3aXRo
IE5hTiBhcyBhIGtleS4KICAgICBpZiAoaXNuYW4obnVtYmVyKSB8fCBudW1iZXIgPT0gSGFzaFRy
YWl0czxkb3VibGU+OjplbXB0eVZhbHVlKCkgfHwgSGFzaFRyYWl0czxkb3VibGU+Ojppc0RlbGV0
ZWRWYWx1ZShudW1iZXIpKQogICAgICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBqc051bWJlcihu
dW1iZXIpKTsKLSAgICBKU1ZhbHVlJiB2YWx1ZUluTWFwID0gbV9udW1iZXJNYXAuYWRkKG51bWJl
ciwgSlNWYWx1ZSgpKS5maXJzdC0+c2Vjb25kOworICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBt
X251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVlKCkpLml0ZXItPnNlY29uZDsKICAgICBpZiAo
IXZhbHVlSW5NYXApCiAgICAgICAgIHZhbHVlSW5NYXAgPSBqc051bWJlcihudW1iZXIpOwogICAg
IHJldHVybiBlbWl0TG9hZChkc3QsIHZhbHVlSW5NYXApOwpAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwg
ZG91YmxlIG51bWJlcikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2Fk
KFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBK
U1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgp
LCAwKS5maXJzdC0+c2Vjb25kOworICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmlu
Z01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXItPnNlY29uZDsKICAgICBpZiAoIXN0
cmluZ0luTWFwKQogICAgICAgICBzdHJpbmdJbk1hcCA9IGpzT3duZWRTdHJpbmcoZ2xvYmFsRGF0
YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwgSlNW
YWx1ZShzdHJpbmdJbk1hcCkpOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgdW5zaWduZWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKIAogSlNTdHJp
bmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewotICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01h
cC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgSlNTdHJpbmcq
JiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRl
ci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApIHsKICAgICAgICAgc3RyaW5nSW5NYXAg
PSBqc1N0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKICAgICAgICAg
YWRkQ29uc3RhbnRWYWx1ZShzdHJpbmdJbk1hcCk7CkBAIC0xNzE4LDEwICsxNzE4LDEwIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCog
ZHN0LCBGdW5jdGlvbkJvZHlOb2RlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TGF6eU5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb24pCiB7Ci0gICAgc3RkOjpwYWlyPEZ1bmN0aW9uT2Zmc2V0TWFwOjppdGVyYXRvciwgYm9v
bD4gcHRyID0gbV9mdW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAwKTsKLSAgICBpZiAocHRy
LnNlY29uZCkKLSAgICAgICAgcHRyLmZpcnN0LT5zZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVu
Y3Rpb25EZWNsKG1ha2VGdW5jdGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0aW9uKSk7Ci0gICAgcmV0
dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgcHRyLmZpcnN0LT5zZWNvbmQsIHRydWUp
OworICAgIEZ1bmN0aW9uT2Zmc2V0TWFwOjpBZGRSZXN1bHQgcHRyID0gbV9mdW5jdGlvbk9mZnNl
dHMuYWRkKGZ1bmN0aW9uLCAwKTsKKyAgICBpZiAocHRyLmlzTmV3S2V5KQorICAgICAgICBwdHIu
aXRlci0+c2Vjb25kID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24o
bV9nbG9iYWxEYXRhLCBmdW5jdGlvbikpOworICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRl
cm5hbChkc3QsIHB0ci5pdGVyLT5zZWNvbmQsIHRydWUpOwogfQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1
bnNpZ25lZCBpbmRleCwgYm9vbCBkb051bGxDaGVjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBiYjk1Y2FmYjY4MjYz
YTliZjUxMGFhNGU0MjI3ZjVlYTQzYTNlZTk4Li4zOGNjNzBkMjNkMDM0NDUwMzk2YWE3MDNmYmUz
YmQ5YzAxOGIyYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNTYsOSArMjU2LDkgQEAgUmVnaXN0ZXJJRCogUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgR2V0dGVy
U2V0dGVyUGFpciBwYWlyKG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZSo+KDApKTsKLSAg
ICAgICAgICAgIHN0ZDo6cGFpcjxHZXR0ZXJTZXR0ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtYXAuYWRkKG5vZGUtPm5hbWUoKS5pbXBsKCksIHBhaXIpOwotICAgICAgICAgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnNl
Y29uZCA9IG5vZGU7CisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtYXAuYWRkKG5vZGUtPm5hbWUoKS5pbXBsKCksIHBhaXIpOworICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZC5z
ZWNvbmQgPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBy
ZW1haW5pbmcgcHJvcGVydGllcyBpbiB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IDQ0MWM5YWVkMzMxYzhiM2ViOGQ3NjIzNDBjYmE5
MzUzNGRjNTM0ZWEuLmIwYzlmZjUzZTIyNmQ1MjNiMmE4ZDIzYmJjODA5NDc2NmMyMjM0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBpbmxpbmUgdm9pZCBSZWNvbXBpbGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkK
IAogICAgIC8vIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBzZXQgLSBp
ZiBzbywKICAgICAvLyB3ZSd2ZSBhbHJlYWR5IHJldHJhbnNsYXRlZCBpdCwgbm90aGluZyB0byBk
byBoZXJlLgotICAgIGlmICghbV9mdW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxlKS5z
ZWNvbmQpCisgICAgaWYgKCFtX2Z1bmN0aW9uRXhlY3V0YWJsZXMuYWRkKGV4ZWN1dGFibGUpLmlz
TmV3S2V5KQogICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCmlu
ZGV4IDk2OTEwMWU4N2M1MzhjOTVkMTdkMTY1MWFlMmFjNWQ2ZDM2YjI1OWQuLmJjODFiMjRhMTE3
ZWQ0YzQ2MDg0NjQwZDhiZjc3NTNmOTYwMTgyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29k
ZU1hcEZvcihDb2RlQmxvY2sqCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRDb2RlTWFw
KCkpOwogICAgIAotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2RlY29k
ZWRDb2RlTWFwcy5hZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
PigpKTsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29kZUJs
b2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKICAgICAKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKKyAgICAgICAg
Y29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShyZXN1bHQuaXRlci0+c2Vjb25kKTsKICAg
ICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5p
dGVyLT5zZWNvbmQ7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDkyODUwNTYz
YWVkNTExNTM5N2NhYzhhNDIyNzU4YjA3NGI4NmE0YTMuLmM3MDExOTdiYjA2MTIwYjQzNTc5ZmI0
ZjkxMzMyMTEyMjYxMTZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NTEsMTEgKzU1MSwxMSBAQCBwcml2YXRlOgogICAgIAog
ICAgIE5vZGVJbmRleCBjZWxsQ29uc3RhbnQoSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAg
cGFpcjxIYXNoTWFwPEpTQ2VsbCosIE5vZGVJbmRleD46Oml0ZXJhdG9yLCBib29sPiBpdGVyID0g
bV9jZWxsQ29uc3RhbnROb2Rlcy5hZGQoY2VsbCwgTm9Ob2RlKTsKLSAgICAgICAgaWYgKGl0ZXIu
c2Vjb25kKQotICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFr
SlNDb25zdGFudCwgT3BJbmZvKGNlbGwpKTsKKyAgICAgICAgSGFzaE1hcDxKU0NlbGwqLCBOb2Rl
SW5kZXg+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jZWxsQ29uc3RhbnROb2Rlcy5hZGQoY2VsbCwg
Tm9Ob2RlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgIHJlc3Vs
dC5pdGVyLT5zZWNvbmQgPSBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oY2VsbCkp
OwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGl0ZXIuZmlyc3QtPnNlY29uZDsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAgICAgfQogICAgIAogICAgIENvZGVPcmlnaW4g
Y3VycmVudENvZGVPcmlnaW4oKQpAQCAtMjU5NSwxMCArMjU5NSwxMCBAQCBCeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeShCeXRlQ29kZVBhcnNlciogYnl0
ZUNvZGVQYXJzZQogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5u
dW1iZXJPZklkZW50aWZpZXJzKCk7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nSW1wbCogcmVw
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKGkpLmltcGwoKTsKLSAgICAgICAgICAgIHBhaXI8SWRl
bnRpZmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2lk
ZW50aWZpZXJNYXAuYWRkKHJlcCwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJP
ZklkZW50aWZpZXJzKCkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCisgICAgICAg
ICAgICBJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1f
aWRlbnRpZmllck1hcC5hZGQocmVwLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJl
ck9mSWRlbnRpZmllcnMoKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3S2V5KQogICAg
ICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJ
ZGVudGlmaWVyKGJ5dGVDb2RlUGFyc2VyLT5tX2dsb2JhbERhdGEsIHJlcCkpOwotICAgICAgICAg
ICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAg
ICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVzdWx0Lml0ZXItPnNlY29uZDsKICAgICAgICAg
fQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZDb25z
dGFudFJlZ2lzdGVycygpOyArK2kpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2Rl
QmxvY2stPmdldENvbnN0YW50KGkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CkBAIC0y
NjExLDEyICsyNjExLDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlCiAgICAgICAgICAgICAg
ICAgbV9jb25zdGFudFJlbWFwW2ldID0gYnl0ZUNvZGVQYXJzZXItPm1fZW1wdHlKU1ZhbHVlSW5k
ZXg7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBwYWlyPEpTVmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBieXRlQ29kZVBhcnNl
ci0+bV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBieXRlQ29kZVBhcnNl
ci0+bV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKSArIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAg
ICAgICAgICBKU1ZhbHVlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1f
anNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgYnl0ZUNvZGVQYXJzZXItPm1f
Y29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCkgKyBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAg
ICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5hZGRDb25zdGFudCh2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29uc3RhbnRzLmFwcGVuZChDb25z
dGFudFJlY29yZCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fY29uc3RhbnRSZW1h
cFtpXSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgbV9jb25zdGFudFJlbWFw
W2ldID0gcmVzdWx0Lml0ZXItPnNlY29uZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
bV9jYWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDlhZTMyYzRiMGRlMmI2OWUzMzFhNThhZGZjNDBlNDE1
MWNhMmZhOTAuLmY0Y2NkODllNzBhM2M5ODVkOWNiNTRjNjRkZmQxOTRhMjE0NWVlNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNTU4LDI0ICszNTU4LDI0IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCB0b19vYmplY3QpCiAKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBKSVRUaHVua3M6OmN0aVN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgc3RkOjpwYWlyPENUSVN0dWJN
YXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYoKSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAgICAgICAg
ZW50cnkuZmlyc3QtPnNlY29uZCA9IGdlbmVyYXRvcihnbG9iYWxEYXRhKTsKLSAgICByZXR1cm4g
ZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBDVElTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBt
X2N0aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCkpOworICAg
IGlmIChlbnRyeS5pc05ld0tleSkKKyAgICAgICAgZW50cnkuaXRlci0+c2Vjb25kID0gZ2VuZXJh
dG9yKGdsb2JhbERhdGEpOworICAgIHJldHVybiBlbnRyeS5pdGVyLT5zZWNvbmQ7CiB9CiAKIE5h
dGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvcikKIHsKLSAgICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNz
V2VhazxOYXRpdmVFeGVjdXRhYmxlPigpKTsKLSAgICBpZiAoIXJlc3VsdC5maXJzdC0+c2Vjb25k
KQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFi
bGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJ
VDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZl
Q29uc3RydWN0KCkpLCBjb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKLSAgICByZXR1cm4gcmVz
dWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgSG9zdEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2Vh
azxOYXRpdmVFeGVjdXRhYmxlPigpKTsKKyAgICBpZiAoIXJlc3VsdC5pdGVyLT5zZWNvbmQpCisg
ICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigq
Z2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBKSVQ6OmNv
bXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKSwgZnVuY3Rpb24sIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0
cnVjdCgpKSwgY29uc3RydWN0b3IsIE5vSW50cmluc2ljKSk7CisgICAgcmV0dXJuIHJlc3VsdC5p
dGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9z
dEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7
Ci0gICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRy
eSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVF
eGVjdXRhYmxlPigpKTsKLSAgICBpZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CisgICAgSG9z
dEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFw
LT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIGlmICgh
KmVudHJ5Lml0ZXItPnNlY29uZCkgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29k
ZTsKICAgICAgICAgaWYgKGdlbmVyYXRvcikgewogICAgICAgICAgICAgaWYgKGdsb2JhbERhdGEt
PmNhblVzZUpJVCgpKQpAQCAtMzU4NCw5ICszNTg0LDkgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklU
VGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZl
RnUKICAgICAgICAgICAgICAgICBjb2RlID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgY29kZSA9IEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwo
Z2xvYmFsRGF0YSwgZnVuY3Rpb24pOwotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gUGFz
c1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNpYykpOworICAgICAgICBlbnRyeS5pdGVyLT5z
ZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigqZ2xvYmFsRGF0YSwgTmF0aXZlRXhl
Y3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBjb2RlLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkp
LCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgaW50cmluc2ljKSk7CiAgICAgfQotICAg
IHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBlbnRyeS5pdGVy
LT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVhckhvc3RGdW5jdGlvblN0
dWJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmNTg4NDdm
ZDI0Njc4ZjJmMjUyYzM1MWI1ZDhkM2JlOWU1MzVhYjcyLi4xZWM1NjY5NTNhZTA3ZTZhZWY3MzAx
NDEyOWUzMTExNWY0MjhhOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAg
ICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKICAgICAgICAgZmFp
bElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRl
ZCkgewotICAgICAgICAgICAgc3RkOjpwYWlyPE9iamVjdFZhbGlkYXRpb25NYXA6Oml0ZXJhdG9y
LCBib29sPiBwcm9wZXJ0eUVudHJ5SXRlciA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5n
ZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOwotICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5SXRlci5zZWNvbmQpIHsKLSAgICAgICAgICAgICAg
ICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQgPT0gUHJvcGVydHlO
b2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICBPYmplY3RWYWxpZGF0aW9uTWFwOjpBZGRSZXN1
bHQgcHJvcGVydHlFbnRyeSA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5nZXROYW1lKHBy
b3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOworICAgICAgICAgICAg
aWYgKCFwcm9wZXJ0eUVudHJ5LmlzTmV3S2V5KSB7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1
ZShwcm9wZXJ0eUVudHJ5Lml0ZXItPnNlY29uZCA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsK
ICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgPT0g
UHJvcGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShjb250
ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNlY29uZCk7
Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNlY29uZCB8PSBjb250
ZXh0LmdldFR5cGUocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoY29udGV4
dC5nZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnkuaXRlci0+c2Vjb25kKTsKKyAgICAg
ICAgICAgICAgICBwcm9wZXJ0eUVudHJ5Lml0ZXItPnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUo
cHJvcGVydHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRhaWwgPSBjb250
ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0
eSwgdGFpbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA3NTEzZDFm
MTFmZDQ4OTU4MjhhZjhjYWViZTgwYWRhMTViNWY1N2Y5Li5hMmIyZTExNDg4MzBmMjBmNWIxOTMz
NGUyZmYwNzM2MDU4YTI1MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTIyMyw3ICsyMjMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgZGVjbGFyZVBhcmFt
ZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKICAgICB7CiAgICAgICAgIGJvb2wgaXNBcmd1
bWVudHMgPSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQ7
Ci0gICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFibGVzLmFk
ZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuc2Vjb25kICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOworICAgICAgICBib29sIGlz
VmFsaWRTdHJpY3RNb2RlID0gbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmco
KS5pbXBsKCkpLmlzTmV3S2V5ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAh
PSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOwogICAgICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0g
bV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBpc1ZhbGlkU3RyaWN0TW9kZTsKICAgICAgICAgaWYgKGlz
QXJndW1lbnRzKQogICAgICAgICAgICAgc2V0RmxhZ3MoU2hhZG93c0FyZ3VtZW50c0ZsYWcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCBmYmM1
Nzg3Y2U2NTcyYThkODRkN2MwNGJmODIzMTdmNTg0ODA2YjYzLi5jMjYwMzk3OWQxNzgxMzY4OTg4
YWUxMGQyZWNhZDUxYjI5MTRlZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDExICsxMTAsMTEgQEAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBJZGVudGlmaWVyOjphZGQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBjaGFy
KiBjKQogICAgIGlmIChpdGVyICE9IGxpdGVyYWxJZGVudGlmaWVyVGFibGUuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAKLSAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gaWRlbnRpZmllclRhYmxlLmFkZDxjb25zdCBM
Q2hhciosIElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcj4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGMpKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IGlkZW50aWZpZXJUYWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmlu
Z1RyYW5zbGF0b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CiAKICAgICAv
LyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9w
dCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlz
IHNvLgotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRlZFN0cmluZyA9IGFkZFJlc3VsdC5zZWNv
bmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAg
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZGVkU3RyaW5nID0gYWRkUmVzdWx0LmlzTmV3S2V5ID8gYWRv
cHRSZWYoKmFkZFJlc3VsdC5pdGVyKSA6ICphZGRSZXN1bHQuaXRlcjsKIAogICAgIGxpdGVyYWxJ
ZGVudGlmaWVyVGFibGUuYWRkKGMsIGFkZGVkU3RyaW5nLmdldCgpKTsKIApAQCAtMTM4LDExICsx
MzgsMTEgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQ4KEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVUNoYXIqIHMKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAgICAgQ2hhckJ1ZmZlcjxVQ2hhcj4gYnVm
ID0ge3MsIGxlbmd0aH07IAotICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9y
LCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUtPmFkZDxDaGFy
QnVmZmVyPFVDaGFyPiwgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvciA+KGJ1Zik7
CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBnbG9iYWxE
YXRhLT5pZGVudGlmaWVyVGFibGUtPmFkZDxDaGFyQnVmZmVyPFVDaGFyPiwgSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyVHJhbnNsYXRvciA+KGJ1Zik7CiAgICAgCiAgICAgLy8gSWYgdGhlIHN0cmlu
ZyBpcyBuZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8g
VGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICByZXR1
cm4gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJl
c3VsdC5maXJzdDsKKyAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3S2V5ID8gYWRvcHRSZWYoKmFk
ZFJlc3VsdC5pdGVyKSA6ICphZGRSZXN1bHQuaXRlcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPgpAQCAtMjEwLDcgKzIxMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRl
bnRpZmllcjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgcmV0dXJuICpnbG9iYWxEYXRh
LT5pZGVudGlmaWVyVGFibGUtPmFkZChyKS5maXJzdDsKKyAgICByZXR1cm4gKmdsb2JhbERhdGEt
PmlkZW50aWZpZXJUYWJsZS0+YWRkKHIpLml0ZXI7CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gSWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiBy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGI5ZTVh
MTg1NDQ5MjM5Nzg3NDYwMjkyYTIyZWFiMzUyYmY3YjhlMjIuLmE0OTY0YjlmMWZlM2FmMDQyNjNm
MDY1MWMzZDc4MjE3MTEzYzBhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKQEAgLTE3OCwxMSArMTc4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwog
ICAgICAgICBDaGFyQnVmZmVyPFQ+IGJ1ZiA9IHtzLCBsZW5ndGh9OyAKLSAgICAgICAgcGFpcjxI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGdsb2JhbERh
dGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VD4sIElkZW50aWZpZXJDaGFyQnVm
ZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpB
ZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hh
ckJ1ZmZlcjxUPiwgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yPFQ+ID4oYnVmKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhl
biB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFp
ciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgICAgICByZXR1cm4gYWRkUmVzdWx0LnNlY29u
ZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5maXJzdDsKKyAgICAg
ICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0tleSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcikg
OiAqYWRkUmVzdWx0Lml0ZXI7CiAgICAgfQogCiAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQpAQCAtMjQ2LDEwICsyNDYs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJ
bXBsPiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1w
bD4gPiwgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0cz4gSWRlbnRpZmllck1hcDsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8
U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gSWRlbnRpZmllclRhYmxlOjphZGQoVSB2YWx1
ZSkKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IElkZW50aWZpZXJUYWJsZTo6
YWRkKFUgdmFsdWUpCiAgICAgewotICAgICAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBs
Kj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZDxVLCBWPih2YWx1ZSk7Ci0g
ICAgICAgICgqcmVzdWx0LmZpcnN0KS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOworICAgICAgICBI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+
KHZhbHVlKTsKKyAgICAgICAgKCpyZXN1bHQuaXRlciktPnNldElzSWRlbnRpZmllcih0cnVlKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMmM2MjBiNGFlNTg5ZDFlYzllNmY0NzY5MmU0NDZjZmE4
NTYzZDQwMS4uZmFmNjBmYmZkMTg1NWZmNDUzMzI5MWFlZWNmMzVkZGVmNjRkYzZkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5NSwxMCArMTk1LDEw
IEBAIHZvaWQgSlNBcnJheTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3Qt
PmRlYWxsb2NhdGVTcGFyc2VNYXAoKTsKIH0KIAotaW5saW5lIHN0ZDo6cGFpcjxTcGFyc2VBcnJh
eVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKEpTQXJy
YXkqIGFycmF5LCB1bnNpZ25lZCBpKQoraW5saW5lIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJl
c3VsdCBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkp
CiB7CiAgICAgU3BhcnNlQXJyYXlFbnRyeSBlbnRyeTsKLSAgICBzdGQ6OnBhaXI8aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CisgICAgQWRkUmVzdWx0IHJlc3Vs
dCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CiAgICAgc2l6ZV90IGNhcGFjaXR5ID0gbV9tYXAuY2Fw
YWNpdHkoKTsKICAgICBpZiAoY2FwYWNpdHkgIT0gbV9yZXBvcnRlZENhcGFjaXR5KSB7CiAgICAg
ICAgIEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoKGNhcGFjaXR5IC0g
bV9yZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2YodW5zaWduZWQpICsgc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikpKTsKQEAgLTIwOSwxNCArMjA5LDE0IEBAIGlubGluZSBzdGQ6OnBhaXI8
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IFNwYXJzZUFycmF5VmFsdWVNYXA6
OmFkZChKCiAKIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVjU3RhdGUq
IGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVudHJ5JiBl
bnRyeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBhZGQo
YXJyYXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXItPnNl
Y29uZDsKIAogICAgIC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJzdCBh
bHdheXMgYWRkIHRvIHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBjYXNl
IHRoYXQgdGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKICAgICAv
LyBleHRlbnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0g
c28gcmVtb3ZlIGFnYWluLgotICAgIGlmIChyZXN1bHQuc2Vjb25kICYmICFhcnJheS0+aXNFeHRl
bnNpYmxlKCkpIHsKLSAgICAgICAgcmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgaWYgKHJlc3Vs
dC5pc05ld0tleSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIHJlbW92ZShy
ZXN1bHQuaXRlcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTI1MiwxNCArMjUyLDE0IEBAIGlubGluZSB2b2lkIFNwYXJzZUFy
cmF5VmFsdWVNYXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25l
ZCBpCiAKIGlubGluZSBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dERpcmVjdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVudHJ5
JiBlbnRyeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBh
ZGQoYXJyYXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXIt
PnNlY29uZDsKIAogICAgIC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJz
dCBhbHdheXMgYWRkIHRvIHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBj
YXNlIHRoYXQgdGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKICAg
ICAvLyBleHRlbnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25l
IC0gc28gcmVtb3ZlIGFnYWluLgotICAgIGlmIChyZXN1bHQuc2Vjb25kICYmICFhcnJheS0+aXNF
eHRlbnNpYmxlKCkpIHsKLSAgICAgICAgcmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgaWYgKHJl
c3VsdC5pc05ld0tleSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIHJlbW92
ZShyZXN1bHQuaXRlcik7CiAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3cs
ICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0
ZW5zaWJsZS4iKTsKICAgICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIEpTQXJyYXk6OmVu
dGVyRGljdGlvbmFyeU1vZGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICAvLyBU
aGlzIHdpbGwgYWx3YXlzIGJlIGEgbmV3IGVudHJ5IGluIHRoZSBtYXAsIHNvIG5vIG5lZWQgdG8g
Y2hlY2sgd2UgY2FuIHdyaXRlLAogICAgICAgICAvLyBhbmQgYXR0cmlidXRlcyBhcmUgZGVmYXVs
dCBzbyBubyBuZWVkIHRvIHNldCB0aGVtLgogICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAg
ICBtYXAtPmFkZCh0aGlzLCBpKS5maXJzdC0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2
YWx1ZSk7CisgICAgICAgICAgICBtYXAtPmFkZCh0aGlzLCBpKS5pdGVyLT5zZWNvbmQuc2V0KGds
b2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkKiBuZXdSYXdTdG9yYWdl
ID0gMDsKQEAgLTQzMCwxNSArNDMwLDE1IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duTnVtZXJp
Y1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5CiAgICAg
QVNTRVJUKG1hcCk7CiAKICAgICAvLyAxLiBMZXQgY3VycmVudCBiZSB0aGUgcmVzdWx0IG9mIGNh
bGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIHBy
b3BlcnR5IG5hbWUgUC4KLSAgICBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRkKHRoaXMsIGluZGV4KTsKLSAgICBTcGFyc2VBcnJh
eUVudHJ5KiBlbnRyeUluTWFwID0gJnJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIFNwYXJzZUFy
cmF5VmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7Cisg
ICAgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCA9ICZyZXN1bHQuaXRlci0+c2Vjb25kOwog
CiAgICAgLy8gMi4gTGV0IGV4dGVuc2libGUgYmUgdGhlIHZhbHVlIG9mIHRoZSBbW0V4dGVuc2li
bGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBPLgogICAgIC8vIDMuIElmIGN1cnJlbnQgaXMgdW5k
ZWZpbmVkIGFuZCBleHRlbnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJlamVjdC4KICAgICAvLyA0LiBJ
ZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0cnVlLCB0aGVuCi0gICAg
aWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAg
IGlmICghaXNFeHRlbnNpYmxlKCkpIHsKLSAgICAgICAgICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5m
aXJzdCk7CisgICAgICAgICAgICBtYXAtPnJlbW92ZShyZXN1bHQuaXRlcik7CiAgICAgICAgICAg
ICByZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBkZWZp
bmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIik7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGFkOThkNjYx
OTBiMDNjYTU1Yzg0YTAyOGM0ODkzMDJiNTFiMThiOWIuLjg5MGZkZjRmMGEwOTQ0ZTU4NGI2NmYx
ZjY0ZTM1ODEzYzk3MjQzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIE1hcDo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgTWFwOjpj
b25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBNYXA6OkFkZFJl
c3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCgpCiAgICAgICAg
ICAgICA6IG1fZmxhZ3MoTm9ybWFsKQpAQCAtODcsNyArODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBjb250ZW50cyBvZiB0aGUg
bWFwCiAgICAgICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB1bnNpZ25lZCwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0
ZSosIEpTQXJyYXkqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAg
ICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKEpTQXJyYXkqLCB1bnNpZ25lZCk7Cisg
ICAgICAgIEFkZFJlc3VsdCBhZGQoSlNBcnJheSosIHVuc2lnbmVkKTsKICAgICAgICAgaXRlcmF0
b3IgZmluZCh1bnNpZ25lZCBpKSB7IHJldHVybiBtX21hcC5maW5kKGkpOyB9CiAgICAgICAgIC8v
IFRoaXMgc2hvdWxkIEFTU0VSVCB0aGUgcmVtb3ZlIGlzIHZhbGlkIChjaGVjayB0aGUgcmVzdWx0
IG9mIHRoZSBmaW5kKS4KICAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpIHsgbV9tYXAu
cmVtb3ZlKGl0KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuY3BwCmluZGV4IDhlZmI0MDY1ZTE3MzljZjA1ZDVkOTE2NmM3NWJlY2Q4
MGRkZTMwZmMuLjFiNmE5Mjc5Y2E0MWVmNmYyNThiZDM4OGQxY2FjOTQ3Y2ZiZDMwMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKFN0cmluZ0lt
cGwqIGlkZW50aWZpZXIpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKICAgICAgICAgICAgICAgICBtX3NldC5hZGQobV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKVtpXS5pbXBsKCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9zZXQuYWRkKGlkZW50
aWZpZXIpLnNlY29uZCkKKyAgICAgICAgaWYgKCFtX3NldC5hZGQoaWRlbnRpZmllcikuaXNOZXdL
ZXkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKaW5kZXggZTM0MDhi
MDhiYjI2YWM5NDhmNzdjNzVmMmEzODE0MTcwODY3ZDQ0MS4uYmJmYTA0NjcyYzNhMjMyOTRhOTdi
YjczZWEyMGRmYTY3NGJmMWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaApAQCAtNDgsNyArNDgsNyBAQCBpbmxp
bmUgSlNWYWx1ZSBTdHJpbmdSZWN1cnNpb25DaGVja2VyOjpwZXJmb3JtQ2hlY2soKQogICAgIGlu
dCBzaXplID0gbV9leGVjLT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVk
T2JqZWN0cy5zaXplKCk7CiAgICAgaWYgKHNpemUgPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVw
dGggJiYgc2l6ZSA+PSBtX2V4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCiAgICAg
ICAgIHJldHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcigpOwotICAgIGJvb2wgYWxyZWFkeVZp
c2l0ZWQgPSAhbV9leGVjLT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVk
T2JqZWN0cy5hZGQobV90aGlzT2JqZWN0KS5zZWNvbmQ7CisgICAgYm9vbCBhbHJlYWR5VmlzaXRl
ZCA9ICFtX2V4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmpl
Y3RzLmFkZChtX3RoaXNPYmplY3QpLmlzTmV3S2V5OwogICAgIGlmIChhbHJlYWR5VmlzaXRlZCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIFJldHVybiBlbXB0eSBzdHJpbmcgdG8g
YXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgogICAgIHJldHVybiBKU1ZhbHVlKCk7IC8vIEluZGlj
YXRlIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAppbmRleCA2ZWU0MTlkYTZhNzhmODEyNjZiZWUyZDZhNGFmNWM1NmQ5ZWQ5NzUzLi43N2FmZGFl
NmVkNTc3NWE2YzY2MzIwNTZmMTVkMmNiM2U2Y2FmMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEwMiwxMiArMTAyLDEyIEBAIGlubGluZSB2
b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzCiAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgdGhlIFNUTCBoYXZlIGFu
IHN0ZDo6bWFrZV9wYWlyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgcnZhbHVlIHJlZmVyZW5jZXMuCiAg
ICAgLy8gV2hlbiBlaXRoZXIgb2YgdGhlIHBhcmFtZXRlcnMgYXJlIGJpdGZpZWxkcywgdGhlIEMr
KyBjb21waWxlciB3aWxsIHRyeSB0byBiaW5kIHRoZW0gYXMgbHZhbHVlcywgd2hpY2ggaXMgaW52
YWxpZC4gVG8gd29yayBhcm91bmQgdGhpcywgdXNlIHVuYXJ5ICIrIiB0byBtYWtlIHRoZSBwYXJh
bWV0ZXIgYW4gcnZhbHVlLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTkyNjEgZm9yIG1vcmUgZGV0YWlscwotICAgIHN0ZDo6cGFpcjxUcmFuc2l0
aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwKCktPmFkZChnbG9iYWxEYXRhLCBt
YWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCArc3RydWN0dXJlLT5tX2F0dHJp
YnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsK
KyAgICBUcmFuc2l0aW9uTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwKCktPmFkZChnbG9iYWxE
YXRhLCBtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCArc3RydWN0dXJlLT5t
X2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05l
d0tleSkgewogICAgICAgICAvLyBUaGVyZSBhbHJlYWR5IGlzIGFuIGVudHJ5ISAtIHdlIHNob3Vs
ZCBvbmx5IGhpdCB0aGlzIHdoZW4gZGVzcGVjaWZ5aW5nLgotICAgICAgICBBU1NFUlQocmVzdWx0
LmZpcnN0LmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAgICAg
IEFTU0VSVChyZXN1bHQuaXRlci5nZXQoKS5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlv
dXMpOwogICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91
cyk7Ci0gICAgICAgIG1hcCgpLT5zZXQocmVzdWx0LmZpcnN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICBtYXAoKS0+c2V0KHJlc3VsdC5pdGVyLCBzdHJ1Y3R1cmUpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCAxYmIzY2Q1YmIzZDliZTk2
NzgzMTI5ZThlNWFlMjEzMGQyZThiZjc4Li5hMmYwMDE4NmIxN2I1ZGUzZjMxYmU5YWE1ZTVlZThk
NDg0ZDJmYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
R0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApA
QCAtNTQsOSArNTQsNyBAQCBjbGFzcyBXZWFrR0NNYXAgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25l
ciB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPEtleVR5cGUsIEhhbmRsZVNsb3QsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZz4gTWFwVHlwZTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZVR5cGVzPE1h
cHBlZFR5cGU+OjpFeHRlcm5hbFR5cGUgRXh0ZXJuYWxUeXBlOwogICAgIHR5cGVkZWYgdHlwZW5h
bWUgTWFwVHlwZTo6aXRlcmF0b3IgbWFwX2l0ZXJhdG9yOwotCiBwdWJsaWM6Ci0KICAgICBzdHJ1
Y3QgaXRlcmF0b3IgewogICAgICAgICBmcmllbmQgY2xhc3MgV2Vha0dDTWFwOwogICAgICAgICBp
dGVyYXRvcihtYXBfaXRlcmF0b3IgaXRlcikKQEAgLTc5LDYgKzc3LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgbWFwX2l0ZXJhdG9yIG1faXRlcmF0b3I7CiAgICAgfTsKIAorICAgIHN0cnVjdCBBZGRS
ZXN1bHQgeworICAgICAgICBBZGRSZXN1bHQodHlwZW5hbWUgTWFwVHlwZTo6QWRkUmVzdWx0IHJl
c3VsdCkgOiBpdGVyKHJlc3VsdC5pdGVyKSwgaXNOZXdLZXkocmVzdWx0LmlzTmV3S2V5KSB7IH0K
KyAgICAgICAgaXRlcmF0b3IgaXRlcjsKKyAgICAgICAgYm9vbCBpc05ld0tleTsKKyAgICB9Owor
CiAgICAgV2Vha0dDTWFwKCkKICAgICB7CiAgICAgfQpAQCAtMTIxLDE3ICsxMjUsMTcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9tYXAuZ2V0KGtleSk7CiAgICAgfQogCi0gICAgcGFpcjxp
dGVyYXRvciwgYm9vbD4gYWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlw
ZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgQWRkUmVzdWx0IGFkZChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgcGFpcjx0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRl
ciA9IG1fbWFwLmFkZChrZXksIDApOwotICAgICAgICBpZiAoaXRlci5zZWNvbmQpIHsKKyAgICAg
ICAgdHlwZW5hbWUgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIDAp
OworICAgICAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAgICAgICBIYW5kbGVTbG90
IHNsb3QgPSBnbG9iYWxEYXRhLmhlYXAuaGFuZGxlSGVhcCgpLT5hbGxvY2F0ZSgpOwotICAgICAg
ICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gc2xvdDsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVy
LT5zZWNvbmQgPSBzbG90OwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+
bWFrZVdlYWsoc2xvdCwgdGhpcywgRmluYWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRG
b3Ioa2V5KSk7CiAgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJh
cnJpZXIoc2xvdCwgdmFsdWUpOwogICAgICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gaXRlcjsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChyZXN1bHQp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHNldChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRy
ZWVOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgK
aW5kZXggNjBkNTk5MjhhNDY3YTYxN2UyZjNhNzgxZWJlMjAwNTE1ZTM2ZDkwMC4uMzRlNDU4Mjhh
OTkyNzRhNzI3NDk2OGUxMWE4ODcwZDVhYmY2MGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2NoaWxkcmVuID0gbmV3IE1hcCgpOwogICAgIAogICAgICAgICBQcm9maWxl
VHJlZU5vZGUgbmV3RW50cnk7Ci0gICAgICAgIHBhaXI8TWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOwotICAgICAgICBQ
cm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAg
ICAgIE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2hpbGRyZW4tPmFkZChTdHJpbmcobmFtZSks
IG5ld0VudHJ5KTsKKyAgICAgICAgUHJvZmlsZVRyZWVOb2RlKiBjaGlsZEluTWFwID0gJnJlc3Vs
dC5pdGVyLT5zZWNvbmQ7CiAgICAgICAgICsrY2hpbGRJbk1hcC0+bV9jb3VudDsKICAgICAgICAg
cmV0dXJuIGNoaWxkSW5NYXA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFz
aENvdW50ZWRTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggY2Fm
YjI2NDllYjYyNDcxYWNjOTZmNGNmMzc4OWVjMDQ5ZDc0MDBlZS4uM2E1MTNjNTVjNWRmNmIyNjFh
NDZiOWY5MDI0MGE4MTVjMTJhNmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaENv
dW50ZWRTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCkBAIC0zNiw2
ICszNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlw
ZTsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7
CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQg
QWRkUmVzdWx0OwogICAgICAgICAKICAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQogICAgICAg
ICAKQEAgLTU3LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIEluY3JlYXNl
cyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAg
IC8vIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIGFuIGludGVyYXRvciB0byB0aGUgbmV3
IHZhbHVlJ3MgCiAgICAgICAgIC8vIGxvY2F0aW9uLCBhbmQgYSBib29sIHRoYXQgaXMgdHJ1ZSBp
ZiBhbiBuZXcgZW50cnkgd2FzIGFkZGVkLgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBW
YWx1ZVR5cGUmKTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlZHVjZXMgdGhlIGNvdW50IG9mIHRo
ZSB2YWx1ZSwgYW5kIHJlbW92ZXMgaXQgaWYgY291bnQKICAgICAgICAgLy8gZ29lcyBkb3duIHRv
IHplcm8sIHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgcmVtb3ZlZC4KQEAgLTE0MiwxMCAr
MTQzLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAg
IGlubGluZSBzdGQ6OnBhaXI8dHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgaW5s
aW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjpBZGRSZXN1bHQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46
OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7IAotICAgICAgICArK3Jlc3Vs
dC5maXJzdC0+c2Vjb25kOworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2
YWx1ZSwgMCk7CisgICAgICAgICsrcmVzdWx0Lml0ZXItPnNlY29uZDsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggYmU3ZTllYmVkMTM3OTNiYTc4ZTBj
YWZkNzM5MDViMWUwNGMzMDU3OC4uNjQ0ZDhlZTU1OTljYzYxMzVlMzg1ZTcxYmE0NGJhOGZlZjZh
OGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hNYXAuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJs
ZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRv
cjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRk
UmVzdWx0OwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHN3YXAoSGFzaE1hcCYpOwpAQCAt
OTQsMTIgKzk1LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyByZXBsYWNlcyB2YWx1
ZSBidXQgbm90IGtleSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVy
biB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAog
ICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBh
Y3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5
VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IHNldChjb25zdCBL
ZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAgLy8gZG9lcyBub3RoaW5nIGlm
IGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFp
ciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBh
IGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0g
ICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFz
c0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQ
YXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAg
ICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTEyMiwxMiArMTIzLDEyIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmKTsKICAg
ICAgICAgLy8gICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25zdCBUJik7
CiAgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5z
aWduZWQgaGFzaENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmLCBNYXBwZWRQ
YXNzSW5UeXBlKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYsIE1hcHBlZFBhc3NJblR5cGUpOwogCiAg
ICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBNYXBw
ZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChjb25z
dCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CiAKICAgICAgICAgY2xhc3Mg
SGFzaE1hcEtleXNQcm94eSA6IHByaXZhdGUgSGFzaE1hcCB7CiAgICAgICAgIHB1YmxpYzoKQEAg
LTMxOSwzNCArMzIwLDM0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVz
dWx0CiAgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lQWRkKGNvbnN0IEtleVR5cGUm
IGtleSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSBtYXBwZWQpIAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMs
IEhhc2hGdW5jdGlvbnM+ID4oa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9v
bD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNz
SW5UeXBlIG1hcHBlZCkgCiAgICAgewotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQp
IHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Cisg
ICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5l
QWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVl
ZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3Rv
cmUobWFwcGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFp
dHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXItPnNlY29uZCk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRZUEUsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotICAgIHBhaXI8dHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hN
YXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRyYW5zbGF0b3I+ID4oa2V5LCB2
YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFk
ZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXggMzNjYjE0
ZGFhYjY4MjY4N2YwYWU4ZTZjMmM4ZjFiMmJhZWY4YWI5Ni4uMWIzYjJlMjg3MzM0MzliMTBiYjc1
M2M5MDRkNTRmZmVjNTVmMjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFNldC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKICAgICAgICAg
dHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1
ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJs
ZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAgdm9pZCBzd2FwKEhhc2hTZXQm
KTsKIApAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICAvLyBUaGUg
cmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBpbnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdz
IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3
IGVudHJ5IHdhcyBhZGRlZC4KLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0
IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwog
CiAgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhl
IG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8gd2l0aCBzb21lIG90
aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2Jq
ZWN0IGlzIGFscmVhZHkKQEAgLTg2LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFz
aENvZGUpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJldmVyc2UgdGhlIG9yZGVyIG9m
IHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgc28gdGhhdCBjYWxsZXJzCiAgICAgICAgIC8vIGNhbiBq
dXN0IHBhc3MgdGhlIHRyYW5zbGF0b3IgYW5kIGxldCB0aGUgY29tcGlsZXIgZGVkdWNlIFQuCi0g
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBwYWly
PGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVCYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gQWRkUmVzdWx0IGFkZChjb25zdCBUJik7CiAK
ICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgICAgIHZvaWQgcmVt
b3ZlKGl0ZXJhdG9yKTsKQEAgLTE3NywxNCArMTc4LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0g
ICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxULCBVLCBWPjo6aXRlcmF0b3IsIGJvb2w+
IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQorICAgIGlubGlu
ZSB0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+OjpBZGRSZXN1bHQgSGFzaFNldDxULCBVLCBWPjo6
YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBs
LmFkZCh2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBI
YXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4KKyAg
ICBpbmxpbmUgdHlwZW5hbWUgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
QWRkUmVzdWx0CiAgICAgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRk
KGNvbnN0IFQmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBh
ZGRQYXNzaW5nSGFzaENvZGU8SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9y
PiA+KHZhbHVlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDA1NzIyZDljNTU2YTc5N2I0MTg4
MDcyMGQ3Y2UzMDA1N2ZiNWY2YjYuLjljMmI5NDE0ZWZiNTlhYTBmNjA3NDczZGQ5NGE0MjE0YzY5
YzRkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0zMzAsMTMgKzMzMCwxOSBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV90YWJsZVNpemU7IH0K
ICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fa2V5Q291bnQ7IH0KIAot
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
eyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2
YWx1ZSksIHZhbHVlKTsgfQorICAgICAgICBzdHJ1Y3QgQWRkUmVzdWx0IHsKKyAgICAgICAgICAg
IEFkZFJlc3VsdChpdGVyYXRvciBpdGVyLCBib29sIGlzTmV3S2V5KSA6IGl0ZXIoaXRlciksIGlz
TmV3S2V5KGlzTmV3S2V5KSB7IH0KKyAgICAgICAgICAgIGl0ZXJhdG9yIGl0ZXI7CisgICAgICAg
ICAgICBib29sIGlzTmV3S2V5OworICAgICAgICB9OworCisgICAgICAgIEFkZFJlc3VsdCBhZGQo
Y29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5
cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsgfQogCiAgICAgICAgIC8vIEEg
c3BlY2lhbCB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5n
IGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lk
IHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKICAg
ICAgICAgLy8gaW4gdGhlIHRhYmxlLgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gcGFpcjxpdGVy
YXRvciwgYm9vbD4gYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtl
eSwgY29uc3QgRXh0cmEmKTsKIAogICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUm
IGtleSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9CiAgICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVy
biBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KQEAgLTY2NSw3ICs2NzEsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGluZSBwYWly
PHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkKGNvbnN0
IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OkFkZFJlc3VsdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBl
eHRyYSkKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwogCkBA
IC03MDAsNyArNzA2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRv
cjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkp
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlZEVudHJ5ID0gZW50cnk7CkBAIC03MTEsNyArNzE3LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQogICAgICAgICAg
ICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAgICAgICAgICAgICAgICBlbHNlIGlm
IChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29k
SXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBZGRS
ZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAgICAg
fQogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgICAgICArK3Byb2JlQ291bnQ7CkBA
IC03MzgsMTkgKzc0NCwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIC8vIGZvbGxv
dyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBwb3NpdGlvbi4KICAgICAgICAgICAg
IEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpOwogICAgICAg
ICAgICAgZXhwYW5kKCk7Ci0gICAgICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBwID0gc3Rk
OjptYWtlX3BhaXIoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQo
cC5maXJzdCAhPSBlbmQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgICAgIEFk
ZFJlc3VsdCByZXN1bHQoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7CisgICAgICAgICAgICBBU1NF
UlQocmVzdWx0Lml0ZXIgIT0gZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3ko
KTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29k
SXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25v
d25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRy
YT4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBl
eHRyYSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjphZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCiAg
ICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIApAQCAtNzY4LDcg
Kzc3NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB1bnNpZ25lZCBoID0gbG9va3VwUmVz
dWx0LnNlY29uZDsKICAgICAgICAgCiAgICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRy
eSksIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5
KSkgewogICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldCgqZW50cnkpOwpAQCAtNzgzLDE0ICs3
ODksMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAvLyBmb2xsb3cgYSBwaXZvdCBl
bnRyeSBhbmQgcmV0dXJuIHRoZSBuZXcgcG9zaXRpb24uCiAgICAgICAgICAgICBLZXlUeXBlIGVu
dGVyZWRLZXkgPSBFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KTsKICAgICAgICAgICAgIGV4cGFu
ZCgpOwotICAgICAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcCA9IHN0ZDo6bWFrZV9wYWly
KGZpbmQoZW50ZXJlZEtleSksIHRydWUpOwotICAgICAgICAgICAgQVNTRVJUKHAuZmlyc3QgIT0g
ZW5kKCkpOwotICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgICAgICBBZGRSZXN1bHQgcmVz
dWx0KGZpbmQoZW50ZXJlZEtleSksIHRydWUpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5m
aXJzdCAhPSBlbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAK
ICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3BhaXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7Cisg
ICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1
ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RI
YXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IDc5OTQ2NmZhOThj
NmRmN2UyNWIyMDY3YzJhMjAwZjQ3OTQ3M2FjMTIuLmEyYmMxMmNmNTQ3OWE0OGQ5NDFiODFmNjBj
NjYwYmU4OWJiOWVjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgK
KysrIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaApAQCAtODEsNiArODEsMTIgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRDb25zdFJldmVyc2VJdGVy
YXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRDb25zdFJldmVyc2VJdGVy
YXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPjsKIAorICAgICAgICBzdHJ1
Y3QgQWRkUmVzdWx0IHsKKyAgICAgICAgICAgIEFkZFJlc3VsdChpdGVyYXRvciBpdGVyLCBib29s
IGlzTmV3S2V5KSA6IGl0ZXIoaXRlciksIGlzTmV3S2V5KGlzTmV3S2V5KSB7IH0KKyAgICAgICAg
ICAgIGl0ZXJhdG9yIGl0ZXI7CisgICAgICAgICAgICBib29sIGlzTmV3S2V5OworICAgICAgICB9
OworCiAgICAgICAgIExpc3RIYXNoU2V0KCk7CiAgICAgICAgIExpc3RIYXNoU2V0KGNvbnN0IExp
c3RIYXNoU2V0Jik7CiAgICAgICAgIExpc3RIYXNoU2V0JiBvcGVyYXRvcj0oY29uc3QgTGlzdEhh
c2hTZXQmKTsKQEAgLTEyNCwxMCArMTMwLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAg
IC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgYWRkIGlzIGEgcGFpciBvZiBhbiBpdGVyYXRvciB0byB0
aGUgbmV3IHZhbHVlJ3MgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sIHRoYXQgaXMg
dHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2FzIGFkZGVkLgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3Qg
VmFsdWVUeXBlJik7CiAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0QmVmb3Jl
KGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUp
OwotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQs
IGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgaW5zZXJ0QmVmb3JlKGNvbnN0
IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpOworICAg
ICAgICBBZGRSZXN1bHQgaW5zZXJ0QmVmb3JlKGl0ZXJhdG9yLCBjb25zdCBWYWx1ZVR5cGUmKTsK
IAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAgICAgdm9pZCBy
ZW1vdmUoaXRlcmF0b3IpOwpAQCAtNjk1LDI2ICs3MDEsMjUgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBVPgotICAgIHBhaXI8dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNp
dHksIFU+OjppdGVyYXRvciwgYm9vbD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+
OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKKyAgICB0eXBlbmFtZSBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT46OkFkZFJlc3VsdCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBh
Y2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQogICAgIHsKLSAgICAgICAgcGFp
cjx0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faW1wbC50ZW1w
bGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7Ci0gICAg
ICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgYXBwZW5kTm9kZSgqcmVzdWx0LmZp
cnN0KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcigqcmVzdWx0
LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUs
IG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKKyAgICAg
ICAgICAgIGFwcGVuZE5vZGUoKnJlc3VsdC5pdGVyKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3Vs
dChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyKSwgcmVzdWx0LmlzTmV3S2V5KTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46
Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2Vy
dEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKKyAgICB0eXBl
bmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OkFkZFJlc3VsdCBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29u
c3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8dHlwZW5hbWUgSW1w
bFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VU
cmFuc2xhdG9yPihuZXdWYWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOwotICAgICAgICBpZiAocmVz
dWx0LnNlY29uZCkKLSAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVz
dWx0LmZpcnN0KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcigq
cmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7Ci0KKyAgICAgICAgdHlwZW5hbWUgSW1wbFR5
cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9y
PihuZXdWYWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3
S2V5KQorICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuaXRl
cik7CisgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlciks
IHJlc3VsdC5pc05ld0tleSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotICAgIHBhaXI8dHlwZW5hbWUgTGlzdEhh
c2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppdGVyYXRvciwgYm9vbD4gTGlzdEhhc2hTZXQ8
VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZv
cmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKKyAgICB0eXBlbmFtZSBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OkFkZFJlc3VsdCBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVl
LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGluc2Vy
dEJlZm9yZShmaW5kKGJlZm9yZVZhbHVlKSwgbmV3VmFsdWUpOyAKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJI
YXNoTWFwLmgKaW5kZXggZjQ4YTU5Y2Y2MzcwMjI2NDA0MjUyMDNjOGU0MmQxNmJlZDhiNTE3My4u
ODE5NDkyOTA1NTA1OTVlYjU3MjI4OWQ4Y2M1ZjQ5OTJkNjViZWMxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhh
c2hNYXAuaApAQCAtNjAsNiArNjAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsKKyAgICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0Owog
CiAgICAgICAgIHZvaWQgc3dhcChIYXNoTWFwJik7CiAKQEAgLTg2LDE0ICs4NywxNCBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0IG5vdCBrZXkgaWYga2V5
IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9m
IHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9v
bGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQKLSAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5U
eXBlKTsgCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChSYXdLZXlUeXBlLCBNYXBw
ZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIE1h
cHBlZFBhc3NJblR5cGUpOworICAgICAgICBBZGRSZXN1bHQgc2V0KFJhd0tleVR5cGUsIE1hcHBl
ZFBhc3NJblR5cGUpOwogCiAgICAgICAgIC8vIGRvZXMgbm90aGluZyBpZiBrZXkgaXMgYWxyZWFk
eSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJh
dG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQn
cyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKLSAg
ICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblR5
cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0lu
VHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlw
ZSk7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICB2b2lk
IHJlbW92ZShSYXdLZXlUeXBlKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgTWFwcGVkUGFzc091dFR5cGUgdGFrZShSYXdLZXlUeXBlKTsgLy8gZWZmaWNpZW50
IGNvbWJpbmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNz
SW5SZWZlcmVuY2VUeXBlKTsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRk
KFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOworICAgICAgICBBZGRSZXN1
bHQgaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsK
KyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5SZWZl
cmVuY2VUeXBlKTsKIAogICAgICAgICBIYXNoVGFibGVUeXBlIG1faW1wbDsKICAgICB9OwpAQCAt
MTk1LDUyICsxOTYsNTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywg
WD46Oml0ZXJhdG9yLCBib29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxU
PiwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBX
LCBYPjo6aW5saW5lQWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luUmVmZXJlbmNl
VHlwZSBtYXBwZWQpIAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGQ8
VHJhbnNsYXRvcj4oa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAg
aW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVy
YXRvciwgYm9vbD4KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYs
IFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Omlu
bGluZUFkZChSYXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSBtYXBwZWQp
IAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGQ8VHJhbnNsYXRvcj4o
a2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFt
ZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5
cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFz
aE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBw
ZWRQYXNzSW5UeXBlIG1hcHBlZCkgCiAgICAgewotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpIHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBl
ZCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAgICAgICAvLyBUaGUg
aW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsg
d2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0
czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBw
ZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXItPnNlY29uZCk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBh
aXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9v
bD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3Vs
dAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2V0KFJhd0tleVR5cGUga2V5
LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgCiAgICAgewotICAgICAgICBwYWlyPGl0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAgICBpZiAoIXJl
c3VsdC5zZWNvbmQpIHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXks
IG1hcHBlZCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAgICAgICAv
LyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBl
bnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBl
ZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAg
ICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXItPnNlY29uZCk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgot
ICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRv
ciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFk
ZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IEtl
eVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpCiAgICAgewogICAgICAgICByZXR1
cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAg
IHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwg
Ym9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJl
c3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6YWRkKFJhd0tleVR5cGUg
a2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAgIHJldHVybiBpbmxp
bmVBZGQoa2V5LCBtYXBwZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0u
aCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggNTliYzRhMjlhOWQ4ZDc3NTFiMmRk
MWQwMzFiODUyM2M2NWI2MzQ3ZC4uOWEyMmRjYmNjN2YwYTRjZjY0MzRhMWVmYTI0MTc3OThiNDZh
YjU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw5ICs0Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGFkZChjb25zdCBUJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQgPSAxKQogICAgIHsKLSAg
ICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBj
b3VudCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kICs9IGNvdW50OworICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2ln
bmVkIGxvbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOworICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNv
bmQgKz0gY291bnQ7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGxvbmcgZ2V0KGNvbnN0IFQm
IGtleSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3Bw
IGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKaW5kZXggZWM1ZGU3MjIwMGY1NzVk
Nzc0Y2MyMGQ5MWE5MzhlOWQ5ZDlmMDI2OS4uZDBmYTcxOTUwYTE3YTc2YWM3NDBlZGUyOTdiNWNm
YTY1MzBlNGMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKQEAgLTYzLDEwICs2MywxMCBA
QCBJZGVudGlmaWVyVGFibGU6On5JZGVudGlmaWVyVGFibGUoKQogICAgICAgICAoKml0ZXIpLT5z
ZXRJc0lkZW50aWZpZXIoZmFsc2UpOwogfQogCi1zdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBs
Kj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFkZChTdHJpbmdJbXBsKiB2YWx1
ZSkKK0hhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgSWRlbnRpZmllclRhYmxlOjphZGQo
U3RyaW5nSW1wbCogdmFsdWUpCiB7Ci0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV90YWJsZS5hZGQodmFsdWUpOwotICAgICgqcmVz
dWx0LmZpcnN0KS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1w
bCo+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWJsZS5hZGQodmFsdWUpOworICAgICgqcmVzdWx0
Lml0ZXIpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oIGIvU291cmNlL1dURi93
dGYvV1RGVGhyZWFkRGF0YS5oCmluZGV4IGIwMmQxMGQ3YzgxOTFhN2E1ZmU3YjVlN2E3MjQ0MmY1
NjhmZDQ2N2QuLmRiYzViYTZhYzU0Zjg1OGE3MjQ4YjczY2MwOTY5NzY5ZjA5YTNhYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9XVEZUaHJlYWREYXRhLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgSWRlbnRpZmllclRhYmxl
IHsKIHB1YmxpYzoKICAgICB+SWRlbnRpZmllclRhYmxlKCk7CiAKLSAgICBzdGQ6OnBhaXI8SGFz
aFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGQoU3RyaW5nSW1wbCogdmFsdWUp
OworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkKFN0cmluZ0ltcGwqIHZh
bHVlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIHN0ZDo6cGFp
cjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZChVIHZhbHVlKTsKKyAg
ICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZChVIHZhbHVlKTsKIAogICAgIGJv
b2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuY3BwCmluZGV4IGQ3NzVlN2JiOTRmZmUwNjM2ZGYzM2JhMmRlM2VkNWMzNWM5ZjkxZGMuLjBj
YTQzODRhMTc3YTE5MWFhYzZkM2Y5YmQ4NzYzZWM1NjU3MmUyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0aWMgaW5saW5lIEhhc2hT
ZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBIYXNoVHJhbnNsYXRvcj4KIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewotICAgIHBhaXI8SGFzaFNldDxT
dHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFk
ZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpB
ZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nVGFibGUoKS5hZGQ8VCwgSGFzaFRyYW5zbGF0b3I+
KHZhbHVlKTsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhl
biB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRl
bGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9w
dFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pc05ld0tleSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcikgOiAqYWRkUmVzdWx0
Lml0ZXI7CiB9CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvciB7CkBAIC0zMDAsNyArMzAwLDcg
QEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmlu
Z0ltcGwqIHIpCiAgICAgaWYgKCFyLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZ0lt
cGw6OmVtcHR5KCk7CiAKLSAgICBTdHJpbmdJbXBsKiByZXN1bHQgPSAqc3RyaW5nVGFibGUoKS5h
ZGQocikuZmlyc3Q7CisgICAgU3RyaW5nSW1wbCogcmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRk
KHIpLml0ZXI7CiAgICAgaWYgKHJlc3VsdCA9PSByKQogICAgICAgICByLT5zZXRJc0F0b21pYyh0
cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAK
aW5kZXggNDE1OGM5OGQ3ZmY4NzQwMzhlNTE3YjYwZDE5NzNjNzI4ZGNmYWI3OS4uNjJjYzliYTk0
NzkyYmNmYzI5ZDAxYTgwZDdjZGE5NzljNWIyNWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6YWNxdWlyZUxvY2soU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIENvb3JkaW5h
dGlvbkluZm9NYXA6Oml0ZXJhdG9yIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRp
bmF0aW9uSW5mb01hcC5maW5kKGRiSWRlbnRpZmllcik7CiAgICAgaWYgKGNvb3JkaW5hdGlvbklu
Zm9JdGVyYXRvciA9PSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuZW5kKCkpIHsKICAgICAgICAgLy8g
Tm8gcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIHRoaXMgREIKLSAgICAgICAgY29vcmRpbmF0aW9u
SW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmFkZChkYklkZW50aWZpZXIsIENv
b3JkaW5hdGlvbkluZm8oKSkuZmlyc3Q7CisgICAgICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRv
ciA9IG1fY29vcmRpbmF0aW9uSW5mb01hcC5hZGQoZGJJZGVudGlmaWVyLCBDb29yZGluYXRpb25J
bmZvKCkpLml0ZXI7CiAgICAgfQogCiAgICAgQ29vcmRpbmF0aW9uSW5mbyYgaW5mbyA9IGNvb3Jk
aW5hdGlvbkluZm9JdGVyYXRvci0+c2Vjb25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAppbmRleCAyYzBlOTQ4MzZmM2M2NDcyMjIy
YWI2NzJkNDMzNzc3ZjNlMWE2MDc3Li5jYTg1MTc5MzdmNjA2MmQ0NzU3ZjBkZjg1NmNiNTQxOGQ4
ZmFjNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RI
YXNoVGFibGVNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RI
YXNoVGFibGVNYXAuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgSlNDOjpIYXNoVGFibGUqLCBKU0M6Okhhc2hUYWJsZT46Oml0ZXJhdG9yIGl0ZXIgPSBt
X21hcC5maW5kKHN0YXRpY1RhYmxlKTsKICAgICAgICAgaWYgKGl0ZXIgIT0gbV9tYXAuZW5kKCkp
CiAgICAgICAgICAgICByZXR1cm4gJml0ZXItPnNlY29uZDsKLSAgICAgICAgcmV0dXJuICZtX21h
cC5zZXQoc3RhdGljVGFibGUsIEpTQzo6SGFzaFRhYmxlKCpzdGF0aWNUYWJsZSkpLmZpcnN0LT5z
ZWNvbmQ7CisgICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6Okhhc2hU
YWJsZSgqc3RhdGljVGFibGUpKS5pdGVyLT5zZWNvbmQ7CiAgICAgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMDA1MGE3MzE1
N2ZkZmNiNWRlMDc2MWYzMjVmNmZkMTVhYzAwMDc2ZC4uNWYzNDQ3ZTI0ZTlmNDk2YjlmNDFkYWRl
NDJkY2RmNGM1Y2U2ZDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVy
ZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHUKIHsK
ICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlcygpOwogICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKLSAg
ICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5m
aXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8s
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXItPnNlY29uZC5nZXQoKTsKIH0KIAogSlNDOjpKU09i
amVjdCogdG9KU1NlcXVlbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQmIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5k
ZXggNzlhM2RhZmQwZTY0YmE1ZDhiMGViNTdlOGU4MWU5MmNlYzg0YzNkMy4uMzc2NDEwOWMwNjg0
NTU4MjFkY2UyYzVjNTczYTM1MzdiMTRiMGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKQEAgLTE0Miw4ICsxNDIsOCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1
bHRQb2xpY3kgewogICAgICAgICBpZiAoc2V0SW5saW5lQ2FjaGVkV3JhcHBlcih3b3JsZCwgZG9t
T2JqZWN0LCB3cmFwcGVyKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgSlNDOjpQYXNz
V2VhazxKU0RPTVdyYXBwZXI+IHBhc3NXZWFrKCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVy
LCB3cmFwcGVyT3duZXIod29ybGQsIGRvbU9iamVjdCksIHdyYXBwZXJDb250ZXh0KHdvcmxkLCBk
b21PYmplY3QpKTsKLSAgICAgICAgcGFpcjxET01PYmplY3RXcmFwcGVyTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gd29ybGQtPm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWsp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAg
IERPTU9iamVjdFdyYXBwZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSB3b3JsZC0+bV93cmFwcGVy
cy5hZGQoZG9tT2JqZWN0LCBwYXNzV2Vhayk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdLZXkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01D
bGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
RE9NQ2xhc3MqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYWRjZDM4ODlmZjI3
ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMC4uOTg0NzY0NGQ3Y2ZhZTRmNzQxYWI4NGJjN2Jj
YjU5MDAxODQ5NTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUo
ZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3Rv
ckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVj
dD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCktPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1w
KS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29u
c3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRl
bXApLml0ZXItPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNv
bnN0cnVjdG9yKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
aW5kZXggYzhmMTZmNWE5NjE2NWJlOGUxM2RiMmJlYjVlYWIxNjA4MzdlOTIwYy4uY2MzZjJkMTE3
MDYzN2NiNDhhMzkzN2FmZjVjNGY1NmRlYzcxZmMzNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC04MiwxMSArODIs
MTEgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICBBU1NFUlRfQVJHKGxpc3RlbmVyLCBs
aXN0ZW5lcik7CiAgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKIAotICAgIHBhaXI8UGFnZUxp
c3RlbmVyc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGFnZUxpc3RlbmVyc01hcC5h
ZGQocGFnZSwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OworICAgIFBhZ2VMaXN0ZW5lcnNNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOworICAgIGlmIChy
ZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBuZXcgTGlzdGVu
ZXJTZXQ7CiAKLSAgICBMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gcmVzdWx0LmZpcnN0LT5zZWNv
bmQ7CisgICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAg
ICAgbGlzdGVuZXJzLT5hZGQobGlzdGVuZXIpOwogCiAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlv
bnNTb29uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggZjQ5NWNlZGM4NjM5ZjBmZjNhYzk3Y2MzNjNjNjM3YWM0MWNkMzI1MC4u
NmJjMzNiODBjOTExZjYwMDk3ZjQ3YWZkMzc2NWM3Yjc1MzUyMmJlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYQogICAgICAgICByZXR1cm4gIiI7CiAgICAgU291
cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9p
bnRzLmZpbmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmVuZCgpKQotICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChz
b3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLmZpcnN0OworICAgICAgICBpdCA9
IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3Bv
aW50TWFwKCkpLml0ZXI7CiAgICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtw
b2ludC5saW5lTnVtYmVyICsgMSkpCiAgICAgICAgIHJldHVybiAiIjsKICAgICBpdC0+c2Vjb25k
LnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IDk2ZjBhODE0ODc0MTM3ZjUyNWJjNDk1MzZlMzE0MmZhMTg4MjJlZGUuLjUy
YTk5MGE1YjUwMmFiNWQ3MGI5ZGQyMzg5Y2E3ZDI1ZjA1N2EwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzky
LDEzICszOTIsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNP
YmplY3QqIG9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBo
IHJlY29uc3RydWN0aW9uCi0gICAgICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+
IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7Cisg
ICAgICAgIE9iamVjdFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRk
KG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5k
bGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAg
ICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0tleSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0
UmVmZXJlbmNlVGFnKTsKLSAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90Pihp
dGVyLmZpcnN0LT5zZWNvbmQpIDwgbV9vYmplY3RQb29sLnNpemUoKSk7Ci0gICAgICAgICAgICB3
cml0ZU9iamVjdEluZGV4KGl0ZXIuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oYWRkUmVzdWx0Lml0ZXItPnNlY29uZCkgPCBtX29iamVjdFBv
b2wuc2l6ZSgpKTsKKyAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoYWRkUmVzdWx0Lml0ZXIt
PnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC03MjYsMTAgKzcyNiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBVU3RyaW5nIHN0ciA9IGlkZW50LnVzdHJp
bmcoKTsKLSAgICAgICAgcGFpcjxTdHJpbmdDb25zdGFudFBvb2w6Oml0ZXJhdG9yLCBib29sPiBp
dGVyID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29sLnNpemUo
KSk7Ci0gICAgICAgIGlmICghaXRlci5zZWNvbmQpIHsKKyAgICAgICAgU3RyaW5nQ29uc3RhbnRQ
b29sOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCks
IG1fY29uc3RhbnRQb29sLnNpemUoKSk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5
KSB7CiAgICAgICAgICAgICB3cml0ZShTdHJpbmdQb29sVGFnKTsKLSAgICAgICAgICAgIHdyaXRl
U3RyaW5nSW5kZXgoaXRlci5maXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5n
SW5kZXgoYWRkUmVzdWx0Lml0ZXItPnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCmluZGV4IGZlZDQ3
Y2E1ZWVlODY2NjAxNjI0NThlM2UxMDRmNDYxMmYxZGY4ZmYuLjA3OGEzMTRmMjA3NGQ4YTNhZWEx
NjRhMzJhNzY1OWNkMjg1MmVmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9J
ZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJl
cC5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBJZGVudGlmaWVyUmVwKiBJZGVudGlmaWVyUmVwOjpn
ZXQoaW50IGludElEKQogICAgICAgICByZXR1cm4gaWRlbnRpZmllcjsKICAgICB9CiAgICAgCi0g
ICAgcGFpcjxJbnRJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW50SWRl
bnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7IAotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0g
ICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmly
c3QtPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKKyAgICBJbnRJZGVudGlmaWVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gaW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7
CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVy
LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJS
ZXAoaW50SUQpOwogICAgICAgICAKLSAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQu
Zmlyc3QtPnNlY29uZCk7CisgICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXIt
PnNlY29uZCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcCo+IFN0cmluZ0lkZW50aWZpZXJNYXA7CkBA
IC05MywxNSArOTMsMTUgQEAgSWRlbnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgICAgIHJldHVybiAwOwogICAKICAgICBVU3RyaW5nIHN0cmluZyA9
IHN0cmluZ1RvVVN0cmluZyhTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUs
IHN0cmxlbihuYW1lKSkpOwotICAgIHBhaXI8U3RyaW5nSWRlbnRpZmllck1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwg
MCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmly
c3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZp
ZXJSZXAobmFtZSk7CisgICAgU3RyaW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9
IHN0cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CisgICAgaWYgKHJl
c3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyLT5zZWNvbmQpOwor
ICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7CiAg
ICAgICAgIAotICAgICAgICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKKyAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuaXRlci0+c2Vjb25kKTsKICAg
ICB9CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiBy
ZXN1bHQuaXRlci0+c2Vjb25kOwogfQogCiBib29sIElkZW50aWZpZXJSZXA6OmlzVmFsaWQoSWRl
bnRpZmllclJlcCogaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
CmluZGV4IDJjYmU5MjNmNWQwMGEyMTJiYTY5MDRhYmJiNjQxMWY5NWUzMDU0MzEuLjM4ODg5ZTc5
Y2IxNTZmMGU3OGY4MzhlMDE1OWU0MzI5ZjlhMGE0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8
Um9vdE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5k
KHJvb3RPYmplY3QpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkgewogICAgICAg
ICAgICAgcm9vdE9iamVjdC0+YWRkSW52YWxpZGF0aW9uQ2FsbGJhY2soJm1faW52YWxpZGF0aW9u
Q2FsbGJhY2spOwotICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFkZChyb290T2JqZWN0LCBKU1Rv
TlBPYmplY3RNYXAoKSkuZmlyc3Q7CisgICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJvb3RP
YmplY3QsIEpTVG9OUE9iamVjdE1hcCgpKS5pdGVyOwogICAgICAgICB9CiAKICAgICAgICAgQVNT
RVJUKGl0ZXItPnNlY29uZC5maW5kKGpzT2JqZWN0KSA9PSBpdGVyLT5zZWNvbmQuZW5kKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAppbmRleCBiOTg5YzFkNWE2ZWFjNzA4ODk0MzRmNTFjOTA3NjYzZmE3MzcyMmU0Li5mNmYzZDRi
M2EyYjE3YzExOGVlMjljOTExY2NiNzZjYzk2ZjIyNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTI0Nyw3ICsxMjQ3
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVlKGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IHByb3AKIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlEKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0LCAoKSk7Ci0gICAgaWYgKCFwcm9wZXJ0eUlEU2V0
LmFkZChwcm9wZXJ0eUlEKS5zZWNvbmQpCisgICAgaWYgKCFwcm9wZXJ0eUlEU2V0LmFkZChwcm9w
ZXJ0eUlEKS5pc05ld0tleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HX0VSUk9SKCJXZWJL
aXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdl
dFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTM2NzM1YWZiNmIx
NzM0NzE3MDg2N2U3NDg0MTdkN2UzZDY3MmU0Yi4uM2U5MGE1M2U5NzJlM2QyMzVlN2E1ZDY0YWFi
ZDAwYWYwOTRjMjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpn
ZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICB1bnNpZ25l
ZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwg
NiB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSA8PCA0CiAgICAgICAgICAgICAgICAg
ICAgICAgIHwgKGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSA9PSBUZXh0T3JpZW50
YXRpb25VcHJpZ2h0ID8gOCA6IDApIHwgKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpID09
IFZlcnRpY2FsID8gNCA6IDApIHwgKHN5bnRoZXRpY0JvbGQgPyAyIDogMCkgfCAoc3ludGhldGlj
SXRhbGljID8gMSA6IDApOwogCi0gICAgU2ltcGxlRm9udERhdGEqJiBjYWNoZWREYXRhID0gbV9m
b250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNpbXBsZUZv
bnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRl
ci0+c2Vjb25kOwogICAgIGlmIChjYWNoZWREYXRhKQogICAgICAgICByZXR1cm4gY2FjaGVkRGF0
YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA2ZDIyZmRjY2Qw
ZDU3OWQwOGM0YTY1YzJlNmU1ZmZiYmI1YTI0ZmE1Li5lMGE3MzlhYzBmOWFkMzdlYTcwNzAxZmVl
NjVjYjMzYjQxNzZkZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApA
QCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUo
Y29uc3QgQ1NTRm9udEZhY2VSdWxlKiBmb250RmFjZVJ1bGUpCiAgICAgICAgIGlmIChmYW1pbHlO
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE93blB0cjxW
ZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+ID4mIGZhbWlseUZvbnRGYWNlcyA9IG1fZm9udEZh
Y2VzLmFkZChmYW1pbHlOYW1lLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgICAgICBPd25Q
dHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBtX2Zv
bnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgICAgICBp
ZiAoIWZhbWlseUZvbnRGYWNlcykgewogICAgICAgICAgICAgZmFtaWx5Rm9udEZhY2VzID0gYWRv
cHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4pOwogCkBAIC00ODcsMTMgKzQ4
NywxMyBAQCBGb250RGF0YSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYwogICAgICAgICByZXR1cm4gZm9udERhdGFG
b3JHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7
CiAgICAgfQogCi0gICAgT3duUHRyPEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50
ZWRGb250RmFjZT4gPiA+JiBzZWdtZW50ZWRGb250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFt
aWx5LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxIYXNoTWFwPHVuc2lnbmVk
LCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VDYWNo
ZSA9IG1fZm9udHMuYWRkKGZhbWlseSwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlmICgh
c2VnbWVudGVkRm9udEZhY2VDYWNoZSkKICAgICAgICAgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9
IGFkb3B0UHRyKG5ldyBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZh
Y2U+ID4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzayA9IGZvbnREZXNjcmlwdGlv
bi50cmFpdHNNYXNrKCk7CiAKLSAgICBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+JiBmYWNl
ID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01hc2ssIDApLmZpcnN0LT5zZWNv
bmQ7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFjZSA9IHNlZ21lbnRlZEZv
bnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFm
YWNlKSB7CiAgICAgICAgIGZhY2UgPSBDU1NTZWdtZW50ZWRGb250RmFjZTo6Y3JlYXRlKHRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAppbmRleCBm
NDYyYzI0YzRkNjU3NTY1YjM2ZTAzMjllZjVhZTQ3ZDhjM2NmNjgwLi4wNjcxYzNhOTFiOGM3MjVi
ZjRlYWYzYTFkZGY0ZmY4NmUxMGUyYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRm9udERhdGEqIENTU1NlZ21lbnRl
ZEZvbnRGYWNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGkKICAgICBGb250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRzTWFzayA9IGZvbnREZXNjcmlwdGlv
bi50cmFpdHNNYXNrKCk7CiAgICAgdW5zaWduZWQgaGFzaEtleSA9ICgoZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCAoRm9udFRyYWl0c01hc2tXaWR0aCArIDEpKSB8
ICgoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwgPyAxIDogMCkgPDwg
Rm9udFRyYWl0c01hc2tXaWR0aCkgfCBkZXNpcmVkVHJhaXRzTWFzazsKIAotICAgIFNlZ21lbnRl
ZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXksIDApLmZp
cnN0LT5zZWNvbmQ7CisgICAgU2VnbWVudGVkRm9udERhdGEqJiBmb250RGF0YSA9IG1fZm9udERh
dGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmIChmb250RGF0YSkK
ICAgICAgICAgcmV0dXJuIGZvbnREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IDMxYTg3YWYwYzNiMzRmOGU2NmY3NDhmYTExNmZkYjE3
ZTQ1NDdkMzEuLmI3MmRjYWZiYmY1YmM4ODlhNWU0YjVkNmExOGEyM2E4MzcxOWM0MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCkBAIC0xMDA0LDcg
KzEwMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgQ291bnRlckRpcmVjdGl2ZU1hcDo6
aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IHBhcmVudE1hcC5lbmQo
KTsKICAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmVudE1hcC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0g
bWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZp
cnN0LCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAo
Y291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5t
X3Jlc2V0ID0gaXQtPnNlY29uZC5tX3Jlc2V0OwogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMu
bV9yZXNldFZhbHVlID0gaXQtPnNlY29uZC5tX3Jlc2V0VmFsdWU7CkBAIC0xMDUyLDcgKzEwNTIs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFs
dWUoKTsKICAgICAgICAgICAgIGludCB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4ocGFpci0+c2Vjb25kKCkpLT5nZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAgQ291bnRl
ckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3Vu
dGVyRGlyZWN0aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVj
dGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGly
ZWN0aXZlcygpKS5pdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9y
ID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDNlYzJkNmQ2NTRjNWRlMjlhMTdj
MzVhYjFlNmQ2ZjE2YjgzNDcyYmIuLjcwNDI5ZWU1ZmJhNWJkNDVjNWMyZTI0Zjk4ZmRlODEwMjlk
MGUzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQ5Niwx
MCArNDk2LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVl
dHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSCiAjaWYgRU5BQkxFKFNUWUxFX1ND
T1BFRCkKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29w
ZShjc3NTaGVldCk7CiAgICAgICAgIGlmIChzY29wZSkgewotICAgICAgICAgICAgcGFpcjxTY29w
ZWRSdWxlU2V0TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JT
dHlsZXMuYWRkKHNjb3BlLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vj
b25kKQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIo
bmV3IFJ1bGVTZXQoKSk7Ci0gICAgICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC0+YWRk
UnVsZXNGcm9tU2hlZXQoY3NzU2hlZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgICAg
ICAgICAgU2NvcGVkUnVsZVNldE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0
aG9yU3R5bGVzLmFkZChzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3S2V5KQorICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyLT5zZWNvbmQgPSBhZG9w
dFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyLT5zZWNvbmQt
PmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1NoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTIzNzMsNyArMjM3Myw3
IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRv
bVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiB7CiAgICAgaWYgKCFrZXkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5hZGQoa2V5
LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxWZWN0b3I8UnVsZURhdGE+ID4m
IHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBpZiAoIXJ1
bGVzKQogICAgICAgICBydWxlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UnVsZURhdGE+KTsKICAg
ICBydWxlcy0+YXBwZW5kKHJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAK
aW5kZXggYzQ2YzcwNDdjNTAwZTRiMjgzZjNkN2VjNTg0YmQ5YjhlOTM0NmVlYS4uZjY5ODNjYTMx
ZjZmMWM5MzcxOWEyZWNlZGQ2ZmUzZDM5ZDllMTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
UG9vbC5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQgaWRlbnQpCiAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7CiAKICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGR1bW15VmFsdWU7Ci0gICAgcGFpcjxJZGVudGlm
aWVyVmFsdWVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9pZGVudGlmaWVyVmFsdWVD
YWNoZS5hZGQoaWRlbnQsIGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAg
ICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihpZGVudCk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSWRlbnRp
ZmllclZhbHVlQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IG1faWRlbnRpZmllclZhbHVlQ2FjaGUu
YWRkKGlkZW50LCBkdW1teVZhbHVlKTsKKyAgICBpZiAoZW50cnkuaXNOZXdLZXkpCisgICAgICAg
IGVudHJ5Lml0ZXItPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KGlkZW50KTsKKyAgICByZXR1cm4gZW50cnkuaXRlci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWdu
ZWQgcmdiVmFsdWUpCkBAIC03OCwxMCArNzgsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVlKQog
ICAgICAgICBtX2NvbG9yVmFsdWVDYWNoZS5jbGVhcigpOwogCiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8Q29sb3JWYWx1ZUNhY2hlOjppdGVyYXRv
ciwgYm9vbD4gZW50cnkgPSBtX2NvbG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1bW15VmFs
dWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOwotICAgIHJldHVybiBl
bnRyeS5maXJzdC0+c2Vjb25kOworICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0IGVudHJ5
ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKKyAgICBpZiAo
ZW50cnkuaXNOZXdLZXkpCisgICAgICAgIGVudHJ5Lml0ZXItPnNlY29uZCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7CisgICAgcmV0dXJuIGVudHJ5Lml0ZXItPnNl
Y29uZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpj
cmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlw
ZSkKQEAgLTExNywxNSArMTE3LDE1IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpCiAgICAgfQog
CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8SW50
ZWdlclZhbHVlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFs
dWUsIGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZp
cnN0LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKLSAg
ICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJbnRlZ2VyVmFsdWVDYWNoZTo6QWRk
UmVzdWx0IGVudHJ5ID0gY2FjaGUtPmFkZChpbnRWYWx1ZSwgZHVtbXlWYWx1ZSk7CisgICAgaWYg
KGVudHJ5LmlzTmV3S2V5KQorICAgICAgICBlbnRyeS5pdGVyLT5zZWNvbmQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICByZXR1cm4gZW50cnkuaXRlci0+c2Vj
b25kOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7Ci0gICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFk
ZChmYW1pbHlOYW1lLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVDYWNoZS5hZGQoZmFtaWx5TmFtZSwgMCku
aXRlci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
Ryk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VWYWx1ZUNhY2hlLnNpemUoKSA+IG1heGltdW1G
b250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9mb250RmFjZVZhbHVlQ2FjaGUuY2xlYXIoKTsK
IAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hl
LmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4m
IHZhbHVlID0gbV9mb250RmFjZVZhbHVlQ2FjaGUuYWRkKHN0cmluZywgMCkuaXRlci0+c2Vjb25k
OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUGFyc2VyOjpwYXJzZUZvbnRG
YWNlVmFsdWUoc3RyaW5nLCBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgcmV0dXJuIHZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCmluZGV4IDQ3MGRhMmFk
NWM3M2IxNzkyYWU2MjNkOTQ4MjY4YjhkNjU1ZTZjNTguLjVjNDJlZjcwODE4NzFhNWJkMjFjNTE5
YmRkOTgwYTA0ZWU4ODI0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2Vk
UmFkaW9CdXR0b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0
dG9ucy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjpzZXRDaGVj
a2VkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHZvaWQgUmFkaW9CdXR0b25Hcm91
cDo6YWRkKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHsKICAgICBBU1NFUlQoYnV0dG9uLT5p
c1JhZGlvQnV0dG9uKCkpOwotICAgIGlmICghbV9tZW1iZXJzLmFkZChidXR0b24pLnNlY29uZCkK
KyAgICBpZiAoIW1fbWVtYmVycy5hZGQoYnV0dG9uKS5pc05ld0tleSkKICAgICAgICAgcmV0dXJu
OwogICAgIGJvb2wgZ3JvdXBXYXNWYWxpZCA9IGlzVmFsaWQoKTsKICAgICBpZiAoYnV0dG9uLT5y
ZXF1aXJlZCgpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6
YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFtX25hbWVUb0dy
b3VwTWFwKQogICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gYWRvcHRQdHIobmV3IE5hbWVUb0dy
b3VwTWFwKTsKIAotICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVU
b0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1
dHRvbkdyb3VwPigpKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3Vw
PiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwg
UGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFn
cm91cCkKICAgICAgICAgZ3JvdXAgPSBSYWRpb0J1dHRvbkdyb3VwOjpjcmVhdGUoKTsKICAgICBn
cm91cC0+YWRkKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
TGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0
aW9uU2NvcGUuY3BwCmluZGV4IGNiYWFhNGVmZWMwMTdiMzYyMmI2ODQ5NGNkZTRmMTkzMWNjYWJk
OGYuLmNmMDRjNWVjNjNmNDRhMjQwM2Q5Y2I3ZDk3MzM0YzI5YWUwMjNiMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAgLTIxMSw5ICsyMTEs
OSBAQCB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91
dGVyOjp3aWxsUmVtb3ZlQ2hpbGQoTm9kZSogdAogCiB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2Nv
cGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjppbmNyZW1lbnRTY29waW5nTGV2ZWwoTm9k
ZSogdGFyZ2V0KQogewotICAgIHBhaXI8U2NvcGluZ0xldmVsTWFwOjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0YXJnZXQsIDEpOwotICAgIGlmICghcmVzdWx0
LnNlY29uZCkgewotICAgICAgICArKyhyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgU2NvcGlu
Z0xldmVsTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0YXJnZXQs
IDEpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CisgICAgICAgICsrKHJlc3VsdC5pdGVy
LT5zZWNvbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA5NmY5Y2M5OWZjNjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhjLi43NDRkNjlk
NzM2MjliY2ZkNzQ5YWE2N2UzYTJhNDAyNDMzMzA4YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTQ1MjEsNyArNDUyMSw3IEBAIEhUTUxBbGxDb2xsZWN0aW9uKiBEb2N1bWVudDo6YWxs
KCkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29s
bGVjdGlvbiA9IG1fd2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBu
dWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+JiBj
b2xsZWN0aW9uID0gbV93aW5kb3dOYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFtZS5pbXBsKCks
IG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBpZiAoIWNvbGxlY3Rpb24pCiAgICAgICAgIGNv
bGxlY3Rpb24gPSBIVE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBXaW5kb3dOYW1lZEl0
ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQoKTsKQEAgLTQ1MjksNyArNDUy
OSw3IEBAIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCiAKIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6ZG9jdW1lbnRO
YW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25QdHI8SFRNTE5h
bWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9u
cy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhU
TUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVj
dGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFj
b2xsZWN0aW9uKQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVh
dGUodGhpcywgRG9jdW1lbnROYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlv
bi5nZXQoKTsKQEAgLTQ5MjIsNyArNDkyMiw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIERv
Y3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QKIAog
SFRNTENhbnZhc0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0g
bV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQ
dHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQo
bmFtZSwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgZWxlbWVu
dCA9IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIGVsZW1lbnQu
Z2V0KCk7CkBAIC01NzI1LDEyICs1NzI1LDEyIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3Vt
ZW50OjpnZXRJdGVtcyhjb25zdCBTdHJpbmcmIHR5cGVOYW1lcykKICAgICAvLyBJbiB0aGlzIGNh
c2Ugd2UgbmVlZCB0byBjcmVhdGUgYW4gdW5pcXVlIHN0cmluZyBpZGVudGlmaWVyIHRvIG1hcCBz
dWNoIHJlcXVlc3QgaW4gdGhlIGNhY2hlLgogICAgIFN0cmluZyBsb2NhbFR5cGVOYW1lcyA9IHR5
cGVOYW1lcy5pc051bGwoKSA/IFN0cmluZygiaHR0cDovL3dlYmtpdC5vcmcvbWljcm9kYXRhL3Vu
ZGVmaW5lZEl0ZW1UeXBlIikgOiB0eXBlTmFtZXM7CiAKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVE
YXRhOjpNaWNyb0RhdGFJdGVtTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbm9k
ZUxpc3RzLT5tX21pY3JvRGF0YUl0ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsK
LSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPE5vZGVM
aXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6Ok1pY3Jv
RGF0YUl0ZW1MaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBub2RlTGlzdHMtPm1fbWljcm9E
YXRhSXRlbUxpc3RDYWNoZS5hZGQobG9jYWxUeXBlTmFtZXMsIDApOworICAgIGlmICghcmVzdWx0
LmlzTmV3S2V5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0
ZXItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8TWljcm9EYXRhSXRlbUxpc3Q+IGxpc3QgPSBNaWNy
b0RhdGFJdGVtTGlzdDo6Y3JlYXRlKHRoaXMsIHR5cGVOYW1lcyk7Ci0gICAgcmVzdWx0LmZpcnN0
LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBsaXN0Lmdl
dCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCA1Yjg5OWIzZjU3OGEyNzQzOTgyNDg1OThiOWQy
OWFkOTg4ZjAwMzZlLi44ZDJhMGEyNWVkODk0MjJmMWZiMDU3ZjU0MTgxNWU2ZDFjM2Y2ZWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoZXZlbnQtPnRh
cmdldCgpKTsKLSAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2ZW50KS5z
ZWNvbmQ7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChldmVudCkuaXNO
ZXdLZXk7CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJdCBzaG91
bGQgbm90IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgogICAgIAogICAgIGlmICghbV9w
ZW5kaW5nRXZlbnRUaW1lci0+aXNBY3RpdmUoKSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIERv
Y3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRy
PE5vZGU+IHRhcmdldCwgUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX25v
ZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0LmdldCgpKS5zZWNvbmQpCisgICAg
aWYgKCFtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0LmdldCgpKS5pc05l
d0tleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdldCh0YXJn
ZXQpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpwZW5kaW5n
RXZlbnRUaW1lckZpcmVkKCkKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBmb3Igd2hlcmUgd2Ug
c2hvdWxkIHN0b3AuCiAgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250YWlucygwKSk7Ci0g
ICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5zZWNvbmQ7CisgICAgYm9v
bCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5pc05ld0tleTsKICAgICBBU1NFUlRf
VU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5
IGJlZW4gaW4gdGhlIGxpc3QuCiAKICAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBwcm90
ZWN0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRl
cmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCmlu
ZGV4IGJjYjIzYjQ5NjJmNjQ2NmJiNjFiOGFlYmFmYTQwNWZlZTg4ZTkzMDMuLjRjM2EzZGQyY2Ni
NjJkZjE0ZGY3ZTdjMjhhMjYzN2Q3MGQwM2FhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE9yZGVyZWRNYXAuY3BwCkBAIC02OSwxNCArNjksMTQgQEAgdm9pZCBEb2N1bWVudE9yZGVy
ZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
aWYgKCFtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CiAgICAgICAgIC8vIEZhc3Qg
cGF0aC4gVGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxpY2F0ZUNvdW50cywgc28gd2Ug
YXNzdW1lIHRoYXQgaXQncwogICAgICAgICAvLyBhbHNvIG5vdCBhbHJlYWR5IGluIG1fbWFwIGFu
ZCB0cnkgdG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywgd2UncmUgZG9uZS4KLSAgICAg
ICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBl
bGVtZW50KTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgIE1hcDo6QWRk
UmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGVsZW1lbnQpOworICAgICAgICBpZiAo
YWRkUmVzdWx0LmlzTmV3S2V5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFRo
ZSBhZGQgZmFpbGVkLCBzbyB0aGlzIGtleSB3YXMgYWxyZWFkeSBjYWNoZWQgaW4gbV9tYXAuCiAg
ICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1v
dmUgdGhlIG1fbWFwCiAgICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIGtleSBzbyBnZXQgc2VhcmNo
ZXMgZm9yIGl0IG5leHQgdGltZSBpdCBpcyBjYWxsZWQuCi0gICAgICAgIG1fbWFwLnJlbW92ZShh
ZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0Lml0ZXIpOwog
ICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVtb3ZlIHRo
ZSBtX21hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IDc3NGU2
NjU3NGE2YmNjMWRlY2ZhOTY2OTYzZGJhOTYwYWE5OWM0NDkuLmU2ZjgyMGYwOTFiZGNkMjIyYzY4
YzU3ZWJlYjQ3Mjk1OGFiOTc1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAKQEAgLTEzNCwxMSArMTM0LDExIEBAIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuCiAgICAg
fQogCiAgICAgaWYgKG1faGFzaE1hcCkgewotICAgICAgICBwYWlyPEV2ZW50TGlzdGVuZXJIYXNo
TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9oYXNoTWFwLT5hZGQoZXZlbnRUeXBlLCBu
dWxscHRyKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBFdmVudExpc3RlbmVyVmVjdG9yKTsKKyAgICAg
ICAgRXZlbnRMaXN0ZW5lckhhc2hNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hhc2hNYXAtPmFk
ZChldmVudFR5cGUsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3S2V5KQorICAg
ICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBFdmVudExpc3RlbmVy
VmVjdG9yKTsKIAotICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuZmly
c3QtPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICByZXR1cm4g
YWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuaXRlci0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3NpbmdsZUV2ZW50TGlzdGVuZXJWZWN0
b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1MzQwY2I0ZTI0NjJiODZiNTBhMmU1ZjY4MTY5OTQy
MmEzZGUyYTNmLi4yNGM1NTVlZGUxZjU4YWE2NjkwNGRiZTVlMTU5YWJmZDg5MGUwZWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCkBAIC0xODEsOSArMTgxLDkgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGlj
cygpCiAKICAgICAgICAgICAgICAgICAvLyBUYWcgc3RhdHMKICAgICAgICAgICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAg
ICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIHNpemVfdD46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kKys7CisgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD46OkFkZFJl
c3VsdCByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0Lml0ZXItPnNlY29uZCsrOwogCiAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRBdHRy
aWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVuZ3RoKCk7
CkBAIC0xNjAwLDEyICsxNjAwLDEyIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVs
ZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogCiAgICAgQXRv
bWljU3RyaW5nIGxvY2FsTmFtZUF0b20gPSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2Rl
RGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJh
cmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChs
b2NhbE5hbWVBdG9tLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9k
ZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1
cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5h
ZGQobG9jYWxOYW1lQXRvbSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuaXRlci0+c2Vjb25kKTsKIAog
ICAgIFJlZlB0cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywg
c3RhckF0b20sIGxvY2FsTmFtZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlz
dC5nZXQoKTsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1
cm4gbGlzdC5yZWxlYXNlKCk7ICAgCiB9CiAKQEAgLTE2MjMsMzYgKzE2MjMsMzYgQEAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVUKIAogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWVBdG9tID0gbmFt
ZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGVOUzo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdAorICAgIE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENh
Y2hlTlM6OkFkZFJlc3VsdCByZXN1bHQKICAgICAgICAgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1
cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZU5TLmFkZChRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCBsb2NhbE5hbWVBdG9tLCBuYW1lc3BhY2VVUkkpLmltcGwoKSwgMCk7Ci0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlz
dD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAg
ICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXItPnNlY29uZCk7
CiAKICAgICBSZWZQdHI8VGFnTm9kZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRlKHRo
aXMsIG5hbWVzcGFjZVVSSS5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IG5hbWVzcGFjZVVSSSwgbG9j
YWxOYW1lQXRvbSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAg
IHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUo
Y29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSkKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRh
OjpOYW1lTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxl
bWVudE5hbWUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBOb2RlTGlzdHNO
b2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1cmVSYXJl
RGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbmFtZU5vZGVMaXN0Q2FjaGUuYWRkKGVs
ZW1lbnROYW1lLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJu
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5pdGVyLT5zZWNvbmQpOwogCiAgICAgUmVmUHRy
PE5hbWVOb2RlTGlzdD4gbGlzdCA9IE5hbWVOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIGVsZW1lbnRO
YW1lKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0
Lml0ZXItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwog
fQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNv
bnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpD
bGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBOb2RlTGlzdHNO
b2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0CiAgICAgICAgID0g
ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNzTm9kZUxpc3RD
YWNoZS5hZGQoY2xhc3NOYW1lcywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAg
ICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAg
IGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlz
dD4ocmVzdWx0Lml0ZXItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8Q2xhc3NOb2RlTGlzdD4gbGlz
dCA9IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBjbGFzc05hbWVzKTsKLSAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IGxp
c3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCkBAIC0yNTc5LDkgKzI1
NzksOSBAQCB2b2lkIE5vZGU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKEhh
c2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosCiAgICAgICAgICAgICBNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSByZWdpc3RyeS0+YXQoaSkuZ2V0KCk7CiAg
ICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9tKHRo
aXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgTXV0YXRpb25SZWNv
cmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVy
eU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hNYXA8V2ViS2l0TXV0YXRpb25P
YnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVy
eU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOworICAg
ICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVj
b3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVn
aXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOworICAgICAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlci0+
c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKIAogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0yNTkyLDkgKzI1OTIsOSBAQCB2b2lkIE5vZGU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zv
ck11dGF0aW9uKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosCiAgICAgICAgICAgICBN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSAqaXRlcjsKICAgICAg
ICAgICAgIGlmIChyZWdpc3RyYXRpb24tPnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20odGhpcywg
dHlwZSwgYXR0cmlidXRlTmFtZSkpIHsKICAgICAgICAgICAgICAgICBNdXRhdGlvblJlY29yZERl
bGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlvbnMgPSByZWdpc3RyYXRpb24tPmRlbGl2ZXJ5T3B0
aW9ucygpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+OjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0
aW9ucyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CisgICAgICAg
ICAgICAgICAgSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmRE
ZWxpdmVyeU9wdGlvbnM+OjpBZGRSZXN1bHQgcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3Ry
YXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0aW9ucyk7CisgICAgICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNv
bmQgfD0gZGVsaXZlcnlPcHRpb25zOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGE3NDI2Mjk1ZWYwNjRlYmU5YzBm
YWRlZjBmNjcwMWQ1MTY1OGRhM2UuLmM4ZWEwYmZhY2Q3NGFkY2EwY2EwZTJkZTBhZmZlYjA3YTgy
MzI2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTU2LDkgKzU2LDkg
QEAgdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsLCBjb25zdCBBdG8KICAgICBpZiAoIWdOYW1lQ2FjaGUpCiAgICAgICAg
IGdOYW1lQ2FjaGUgPSBuZXcgUU5hbWVTZXQ7CiAgICAgUXVhbGlmaWVkTmFtZUNvbXBvbmVudHMg
Y29tcG9uZW50cyA9IHsgcC5pbXBsKCksIGwuaW1wbCgpLCBuLmlzRW1wdHkoKSA/IG51bGxBdG9t
LmltcGwoKSA6IG4uaW1wbCgpIH07Ci0gICAgcGFpcjxRTmFtZVNldDo6aXRlcmF0b3IsIGJvb2w+
IGFkZFJlc3VsdCA9IGdOYW1lQ2FjaGUtPmFkZDxRdWFsaWZpZWROYW1lQ29tcG9uZW50cywgUU5h
bWVDb21wb25lbnRzVHJhbnNsYXRvcj4oY29tcG9uZW50cyk7Ci0gICAgbV9pbXBsID0gKmFkZFJl
c3VsdC5maXJzdDsgICAgCi0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIFFOYW1lU2V0
OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ05hbWVDYWNoZS0+YWRkPFF1YWxpZmllZE5hbWVDb21w
b25lbnRzLCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yPihjb21wb25lbnRzKTsKKyAgICBtX2lt
cGwgPSAqYWRkUmVzdWx0Lml0ZXI7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdLZXkpCiAgICAg
ICAgIG1faW1wbC0+cmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
cGFjZVNwbGl0U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5n
LmNwcAppbmRleCAwMzVjNGEyMWE3MmM5Y2Q4NDBlMGIyOTYyY2U2OTc2YWQ4NTZiY2JlLi45ZTM2
ZDUxMGRkOTZiZjQ3YzlhOGUxYTRmOWRjYjg2MjEzZmNkZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgU3BhY2VTcGxpdFN0cmlu
Z0RhdGE6On5TcGFjZVNwbGl0U3RyaW5nRGF0YSgpCiAKIFBhc3NSZWZQdHI8U3BhY2VTcGxpdFN0
cmluZ0RhdGE+IFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgU3BhY2VTcGxpdFN0cmluZ0RhdGEqJiBkYXRhID0gc2hhcmVkRGF0
YU1hcCgpLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU3BhY2VTcGxpdFN0cmlu
Z0RhdGEqJiBkYXRhID0gc2hhcmVkRGF0YU1hcCgpLmFkZChzdHJpbmcsIDApLml0ZXItPnNlY29u
ZDsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgZGF0YSA9IG5ldyBTcGFjZVNwbGl0U3RyaW5n
RGF0YShzdHJpbmcpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoZGF0YSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTc2MWY1MDZlOTAxMDkxNzM2NDZjMWM5MzdjNTEw
NzYzYjFhYzI2My4uZDVjYjZkMWI1Zjg5Yjg2OWZhMzYzN2M4MmJjNDAyZjczMGQxNjhlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQg
U3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogCiAgICAgUHJlc2VudGF0aW9u
QXR0cmlidXRlQ2FjaGU6Oml0ZXJhdG9yIGNhY2hlSXRlcmF0b3I7CiAgICAgaWYgKGNhY2hlSGFz
aCkgewotICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUo
KS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5maXJzdDsKKyAgICAgICAgY2FjaGVJdGVyYXRvciA9
IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuYWRkKGNhY2hlSGFzaCwgbnVsbHB0cikuaXRl
cjsKICAgICAgICAgaWYgKGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJhdG9yLT5z
ZWNvbmQtPmtleSAhPSBjYWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7CiAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IGQxMWZlZTEy
MTgxNWM3Y2ZjN2M5OWQwMWNlNTQ1NTg3YmUzY2IxYjYuLjE1MWQ2YmE5ZmVhZTkxMzZiYWM4ZWVh
MmNlNDkwYWU0NjMwMzVkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3Bw
CkBAIC0zNTksNyArMzU5LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246
OnRhZ3MoY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjphcHBlbmQo
Tm9kZUNhY2hlTWFwJiBtYXAsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50KiBlbGVt
ZW50KQogewotICAgIE93blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1hcC5hZGQo
a2V5LmltcGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPEVs
ZW1lbnQqPiA+JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXItPnNl
Y29uZDsKICAgICBpZiAoIXZlY3RvcikKICAgICAgICAgdmVjdG9yID0gYWRvcHRQdHIobmV3IFZl
Y3RvcjxFbGVtZW50Kj4pOwogICAgIHZlY3Rvci0+YXBwZW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyNWRjYTMzY2U3MDQ4
OGRiNWE4M2NkOWY5M2VkNWNkMWZhOGE5ZDY3Li5kNjU2ZDIzNWI5OWNkZjgwZDY3MWNjZTc0ZjM0
ZjdmMzM5M2I1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBw
b3J0LmNwcApAQCAtMjMzLDEyICsyMzMsMTIgQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0
IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHQKICAg
ICBEaWZmVGFibGUgb2xkVGFibGU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0xp
c3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG5ld1Rh
YmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0OworICAg
ICAgICBEaWZmVGFibGU6Oml0ZXJhdG9yIGl0ID0gbmV3VGFibGUuYWRkKG5ld0xpc3RbaV0tPm1f
c2hhMSwgVmVjdG9yPHNpemVfdD4oKSkuaXRlcjsKICAgICAgICAgaXQtPnNlY29uZC5hcHBlbmQo
aSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvbGRMaXN0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBvbGRUYWJsZS5hZGQob2xk
TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgRGlmZlRh
YmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ldLT5tX3NoYTEsIFZlY3Rv
cjxzaXplX3Q+KCkpLml0ZXI7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5k
ZXggZGNhODFjYWNhYzZiMzg3ZGVlYTZmOTM5N2MwYWNlZTI0MmY2MDY2OS4uZDFhM2JlYjdlMjcw
NjQ3ZTk3YzJhNDBiNzBmYTA2MTcwYWQ0NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBpbmxpbmUg
dm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkKICAgICBk
b3VibGUgbWF0Y2hUaW1lTXMgPSBXVEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNo
RGF0YS5zdGFydFRpbWU7CiAgICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1z
OwogCi0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMo
bV9jdXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnRv
dGFsVGltZSArPSBtYXRjaFRpbWVNczsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuaGl0
cyArPSAxOworICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9y
dWxlTWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJl
bnRNYXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAo
IXJlc3VsdC5pc05ld0tleSkgeworICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kLnRvdGFsVGlt
ZSArPSBtYXRjaFRpbWVNczsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZC5oaXRzICs9IDE7
CiAgICAgICAgIGlmIChtYXRjaGVkKQotICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQu
bWF0Y2hlcyArPSAxOworICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZC5tYXRjaGVzICs9
IDE7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAppbmRleCA3YzA3NTkxZGYwZTIyMWE1ZWRhMGI0OWJkNDk0NjIxODlhOGU4M2Vj
Li43YjlmOWY5MzdkYmVlNTM3NmIxZDc5NGJjNDNmNjBhM2RhYTkzMmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTg3Niw3ICs4NzYs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgIH0KIAogICAgICpzZWFyY2hJZCA9IElk
ZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOwotICAgIFNlYXJjaFJlc3VsdHM6
Oml0ZXJhdG9yIHJlc3VsdHNJdCA9IG1fc2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElkLCBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4oKSkuZmlyc3Q7CisgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3Ig
cmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8
Tm9kZT4gPigpKS5pdGVyOwogCiAgICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9y
IGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rvci5lbmQo
KTsgKytpdCkKICAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBwZW5kKCppdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggNDY1ZjdkYmJhODliZjViNDJkNTYxM2E5NmVlM2EyNGE5NGRhZmQzOC4uYjdiMTk1YmU3OWU2
MzM5MTlmYjM5MTk3ODY5YWNkODAwOTMwYmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAKICAgICBCcmVha3BvaW50SWRUb0RlYnVnU2VydmVy
QnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0
b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmZpbmQoYnJlYWtw
b2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPT0gbV9i
cmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5lbmQoKSkKLSAgICAgICAgZGVi
dWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2
ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3RvcjxTdHJpbmc+KCkpLmZpcnN0
OworICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9IG1fYnJlYWtwb2lu
dElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFrcG9pbnRJZCwgVmVjdG9yPFN0
cmluZz4oKSkuaXRlcjsKICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvci0+c2Vj
b25kLmFwcGVuZChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZCk7CiAKICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oCmluZGV4IDcwN2MyNzZhZWFlNjllZjdmNTNmZTU4YjNiYTBmMWYzYjYyZDM2OGEu
LjEzMWNjMDgwZjZhOGUwZDYzMGVlMDI2OTVjZThmZjc1YTk0MzcwYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTI4MSwyMSArMjgxLDIxIEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0VmFs
dWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkK
IHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5z
ZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3S2V5KQogICAgICAg
ICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0
OjpzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9kYXRhLnNldChuYW1l
LCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5pc05ld0tl
eSkKICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvck9iamVjdDo6c2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEu
c2V0KG5hbWUsIHZhbHVlKS5zZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUp
LmlzTmV3S2V5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCBlNjIyOWM0NGQ1NDYwMGNmNTRhNmNiNTRjYTM2YmEzODIxZWRlMjA2Li44MjBl
MzFlN2Y1MGM4ZWI5N2U1MWY3ZTVhOGNjNmFlOTEyMTZiY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTA2MiwxMCArMTA2MiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIHR5cGUpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgcGFpcjxFbnRyeU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1f
cGVuZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7CisgICAgRW50cnlNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUpOwogICAgIAotICAgIGlmICgh
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gdHlwZTsKKyAg
ICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCB8PSB0
eXBlOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQXBwbGljYXRpb25DYWNoZSog
Y2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxNmE3Y2NmMmQzNWY2NGVkNGIwZTU3MzIx
MGEzNjc1ODM1NzQ0ZGYxLi44YzcyZjZhOWFjNjQ1OTg2NTQwOTFmOGY5MGE0NDBlZjY4MzBjNWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEzNCwxMSArMTM0LDExIEBAIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3Jv
dXAoY29uc3QgS1VSCiB7CiAgICAgQVNTRVJUKCFtYW5pZmVzdFVSTC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSk7CiAKLSAgICBzdGQ6OnBhaXI8Q2FjaGVHcm91cE1hcDo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0VVJMLCAwKTsKKyAgICBDYWNo
ZUdyb3VwTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZXNJbk1lbW9yeS5hZGQobWFuaWZl
c3RVUkwsIDApOwogICAgIAotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NF
UlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5z
ZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dC5pdGVyLT5zZWNvbmQpOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsKICAg
ICB9CiAKICAgICAvLyBMb29rIHVwIHRoZSBncm91cCBpbiB0aGUgZGF0YWJhc2UKQEAgLTE1MCw3
ICsxNTAsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogICAgICAgICBtX2NhY2hlSG9zdFNl
dC5hZGQodXJsSG9zdEhhc2gobWFuaWZlc3RVUkwpKTsKICAgICB9CiAgICAgCi0gICAgcmVzdWx0
LmZpcnN0LT5zZWNvbmQgPSBncm91cDsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gZ3JvdXA7
CiAgICAgCiAgICAgcmV0dXJuIGdyb3VwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IGE3MWU4NTE1NDZmYzIwYWI4N2NhNzcyMDU1NjE3NGZjNjY2MmVlN2MuLjQyOGUz
M2IyNWI2NjNlZThmNDI4NTRlZjhhNGM5OGYyODIyMGY5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTM1MTYsNyArMzUxNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAg
IC8vIEVuc3VyZSB0aGlzIHRhcmdldCdzIHRvdWNoIGxpc3QgZXhpc3RzLCBldmVuIGlmIGl0IGVu
ZHMgdXAgZW1wdHksIHNvIGl0IGNhbiBhbHdheXMgYmUgcGFzc2VkIHRvIFRvdWNoRXZlbnQ6OkNy
ZWF0ZSBiZWxvdy4KICAgICAgICAgVGFyZ2V0VG91Y2hlc01hcDo6aXRlcmF0b3IgdGFyZ2V0VG91
Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LmZpbmQodG91Y2hUYXJnZXQuZ2V0KCkpOwog
ICAgICAgICBpZiAodGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID09IHRvdWNoZXNCeVRhcmdldC5lbmQo
KSkKLSAgICAgICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5z
ZXQodG91Y2hUYXJnZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLmZpcnN0OworICAgICAg
ICAgICAgdGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0b3VjaFRh
cmdldC5nZXQoKSwgVG91Y2hMaXN0OjpjcmVhdGUoKSkuaXRlcjsKIAogICAgICAgICAvLyB0b3Vj
aGVzIGFuZCB0YXJnZXRUb3VjaGVzIHNob3VsZCBvbmx5IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJv
dXQgdG91Y2hlcyBzdGlsbCBvbiB0aGUgc2NyZWVuLCBzbyBpZiB0aGlzIHBvaW50IGlzCiAgICAg
ICAgIC8vIHJlbGVhc2VkIG9yIGNhbmNlbGxlZCBpdCB3aWxsIG9ubHkgYXBwZWFyIGluIHRoZSBj
aGFuZ2VkVG91Y2hlcyBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDczMWUx
ZmMwNzliNWZlOWZiMzkwMGZiNTdiZjM2ZTFkOTY2YThmYjIuLjFmZTQ3Njk5ODUwMzNlZDM5OTU3
NTM5YmJjNTg4N2UwZjNlMDZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTkw
LDE1ICs5MCwxNSBAQCBQYWdlR3JvdXAqIFBhZ2VHcm91cDo6cGFnZUdyb3VwKGNvbnN0IFN0cmlu
ZyYgZ3JvdXBOYW1lKQogICAgIGlmICghcGFnZUdyb3VwcykKICAgICAgICAgcGFnZUdyb3VwcyA9
IG5ldyBQYWdlR3JvdXBNYXA7CiAKLSAgICBwYWlyPFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IHBhZ2VHcm91cHMtPmFkZChncm91cE5hbWUsIDApOworICAgIFBhZ2VHcm91
cE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHBhZ2VHcm91cHMtPmFkZChncm91cE5hbWUsIDApOwog
Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3Qt
PnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IFBhZ2VHcm91cChn
cm91cE5hbWUpOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNTRVJUKCFy
ZXN1bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IG5ldyBQ
YWdlR3JvdXAoZ3JvdXBOYW1lKTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5z
ZWNvbmQpOwotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBBU1NFUlQocmVz
dWx0Lml0ZXItPnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiB9CiAK
IHZvaWQgUGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSgpCkBAIC0xOTcsNyArMTk3LDcgQEAg
aW5saW5lIHZvaWQgUGFnZUdyb3VwOjphZGRWaXNpdGVkTGluayhMaW5rSGFzaCBoYXNoKQogewog
ICAgIEFTU0VSVChzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk7CiAjaWYgIVBMQVRGT1JNKENIUk9N
SVVNKQotICAgIGlmICghbV92aXNpdGVkTGlua0hhc2hlcy5hZGQoaGFzaCkuc2Vjb25kKQorICAg
IGlmICghbV92aXNpdGVkTGlua0hhc2hlcy5hZGQoaGFzaCkuaXNOZXdLZXkpCiAgICAgICAgIHJl
dHVybjsKICNlbmRpZgogICAgIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQodGhpcywgaGFzaCk7
CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxk
KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmMKICAgICBPd25QdHI8
VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2VyU2NyaXB0KHNvdXJjZSwg
dXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMp
KTsKICAgICBpZiAoIW1fdXNlclNjcmlwdHMpCiAgICAgICAgIG1fdXNlclNjcmlwdHMgPSBhZG9w
dFB0cihuZXcgVXNlclNjcmlwdE1hcCk7Ci0gICAgT3duUHRyPFVzZXJTY3JpcHRWZWN0b3I+JiBz
Y3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuZmlyc3Qt
PnNlY29uZDsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNjcmlwdHNJbldvcmxkID0g
bV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYg
KCFzY3JpcHRzSW5Xb3JsZCkKICAgICAgICAgc2NyaXB0c0luV29ybGQgPSBhZG9wdFB0cihuZXcg
VXNlclNjcmlwdFZlY3Rvcik7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZCh1c2VyU2NyaXB0
LnJlbGVhc2UoKSk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJT
dHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHMK
ICAgICBPd25QdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gYWRvcHRQdHIobmV3
IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsKSk7CiAgICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cykKICAgICAgICAg
bV91c2VyU3R5bGVTaGVldHMgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hlZXRNYXApOwotICAg
IE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNl
clN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3du
UHRyPFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5
bGVTaGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlmICghc3R5
bGVTaGVldHNJbldvcmxkKQogICAgICAgICBzdHlsZVNoZWV0c0luV29ybGQgPSBhZG9wdFB0cihu
ZXcgVXNlclN0eWxlU2hlZXRWZWN0b3IpOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5k
KHVzZXJTdHlsZVNoZWV0LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwCmluZGV4IDkzMWYyNjAzZmQ0ZjIyMWI0YjVkZTNhY2RjMzdkOTc2ZDEzZGYyMjcuLjg5
MWI1ODVhNDc0MWIxMWI1YWY0ZTE3MGY4MWQ2MzE0MzQ5MWY3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xMzEsMTEgKzEzMSwxMSBAQCB2b2lkIFNlY3VyaXR5
UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdp
biYgc291cmNlTwogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0g
c291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFpcjxPcmlnaW5BY2Nlc3NNYXA6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBu
dWxscHRyKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5z
ZWNvbmQgPSBhZG9wdFB0cihuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKKyAgICBPcmlnaW5B
Y2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNl
U3RyaW5nLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXN1
bHQuaXRlci0+c2Vjb25kID0gYWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CiAK
LSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuZmlyc3QtPnNlY29uZC5n
ZXQoKTsKKyAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlci0+c2Vj
b25kLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMg
PyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6
OkRpc2FsbG93U3ViZG9tYWlucykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0
bWVudC5jcHAKaW5kZXggZGQwNTQ2MThkMGY4MGE4MDI2MjY4NWQ4YjBmNGE5OTdiYjEzYjUzOC4u
OGE5OWJmZmYwZmJhODhhM2FiNzVlNDgzZDg2ZTMzYTg3YzhmZTVmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgY29tcGls
ZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdl
dEdlb21ldHJ5TGlzCiAgICAgICAgICAgICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNpdGVkTm9k
ZTsKICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNvbGxlY3Qg
dGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQgbGF0ZXIu
CiAgICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRP
ckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFpcjxIYXNoU2V0PE5vZGUq
Pjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5h
ZGQodmlzaXRlZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5zZWNv
bmQpCisgICAgICAgICAgICAgICAgICAgIEhhc2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVz
dWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJzU2V0LmFkZCh2aXNpdGVkTm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5KQogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAK
aW5kZXggNDRjNTY4MWZiYmQ1MzQ4YjIwMTQ5MzUxZmEzNjgzMmQ3OTU4MjYyOC4uNTAwOTFlMTlk
M2FmNTZmZjRhOGRmMTc1YmY4OTc4NzAwNzYxNDI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0
cmluZyBIVFRQSGVhZGVyTWFwOjpnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAog
ICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+
OjpnZXQobmFtZSk7CiB9CiAKLXBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhU
VFBIZWFkZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCitIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICByZXR1cm4g
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUs
IHZhbHVlKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEhUVFBIZWFkZXJNYXA6OmNvbnRh
aW5zKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGZpbmQ8Y29uc3QgY2hhcios
IENhc2VGb2xkaW5nQ1N0cmluZ1RyYW5zbGF0b3I+KG5hbWUpICE9IGVuZCgpOwogfQogCi1wYWly
PEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0hUVFBIZWFkZXJNYXA6OkFkZFJlc3Vs
dCBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRp
bmdIYXNoPjo6YWRkPGNvbnN0IGNoYXIqLCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yPihu
YW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oCmluZGV4IDAyMDcxZTM2MTBjMWQ0YjRmY2RmNGQ2Yzk1OWI0OWY4N2YzYTVm
MTUuLjEyYmRlMDY4OTdlN2NlM2YzZWM5MDEyZTFjMzdmZGZmZThkODljMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC01MSwxMiAr
NTEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGdl
dChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgICAgIHBhaXI8aXRlcmF0
b3IsIGJvb2w+IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICAgICAgLy8gQWx0ZXJuYXRlIGFjY2Vzc29ycyB0aGF0
IGFyZSBmYXN0ZXIgdGhhbiBjb252ZXJ0aW5nIHRoZSBjaGFyKiB0byBBdG9taWNTdHJpbmcgZmly
c3QuCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogICAgICAgICBT
dHJpbmcgZ2V0KGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9v
bD4gYWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgICAgICBB
ZGRSZXN1bHQgYWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAg
ICAgICAKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCA0M2E2NGU5NzA3MjQwNDA0MjI3ZGNi
MGQ1ZTI1NmQzNzRiODczNTlhLi5mZWY4NzgzNTZhNWNmZTEwYTk3ODM3ZmU2NTdiYzM5NmI2MjFm
ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTM3MSw5ICszNzEsOSBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdEJhc2U6OnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogdm9p
ZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJl
cXVlc3QoKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBtX2h0dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsgCi0gICAgaWYgKCFyZXN1bHQu
c2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKKyAg
ICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFk
ZChuYW1lLCB2YWx1ZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIHJlc3Vs
dC5pdGVyLT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpKQogICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggM2U1OThi
YWI2YjlhODUwYTVhNmNjOTI4YzAwNjljMDg5M2E4MTA5ZS4uMTFhNTc0NWRkZmNlNGM5ZWZjYTEy
ZDYwZjc2ZGUyOGEyZjQ1YWUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjphZGQoUGFz
c1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBwcnBQYWNrYWdlKQogCiAgICAgUmVmUHRyPFBsdWdpblBh
Y2thZ2U+IHBhY2thZ2UgPSBwcnBQYWNrYWdlOwogCi0gICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBh
Y2thZ2UpLnNlY29uZCkKKyAgICBpZiAoIW1fcGx1Z2lucy5hZGQocGFja2FnZSkuaXNOZXdLZXkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fcGx1Z2luc0J5UGF0aC5hZGQocGFja2Fn
ZS0+cGF0aCgpLCBwYWNrYWdlKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAgICAgICAgIFJlZlB0cjxQbHVn
aW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNo
ZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsKIAotICAgICAgICBp
ZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5zZWNvbmQpIHsKKyAgICAg
ICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1Z2lucy5hZGQocGFja2FnZSkuaXNOZXdLZXkpIHsK
ICAgICAgICAgICAgIGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzLmFkZChwYWNrYWdlLT5wYXRo
KCksIHBhY2thZ2UtPmxhc3RNb2RpZmllZCgpKTsKICAgICAgICAgICAgIGNhY2hlZFBsdWdpbnNC
eVBhdGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCAyNzEy
MWM2NjRlM2M2YjZiYzZiNWQ2ZWRkYmJhYmJjZjcyYjc2OWVkLi41NTYwMjU3NjgzZjg5YjQxMGI1
OTg2YjExZThiNWY5OWE2NGE2NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93
aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBQbHVnaW5E
YXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0
aHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFN0cmlu
ZyBmdWxsUGF0aCA9ICppdCArICJcXCIgKyBmaWxlbmFtZTsKLSAgICAgICAgICAgIGlmICghdW5p
cXVlRmlsZW5hbWVzLmFkZChmdWxsUGF0aCkuc2Vjb25kKQorICAgICAgICAgICAgaWYgKCF1bmlx
dWVGaWxlbmFtZXMuYWRkKGZ1bGxQYXRoKS5pc05ld0tleSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRkKGZ1bGxQYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGQ0NmQ1Yjk0MzQzNTc2YjZkZDA5MzA0MzEx
MDVjNjAxOTg5N2FlN2EuLjRlMjJiY2Q3YjExN2RjZmFiZDJlZDA1M2U5OTRkZDM5N2IxZTY2ODgg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzgzMyw3ICsz
ODMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVu
ZGVyQm94KiBkZXNjZW5kYW50KQogICAgICAgICBkZXNjZW5kYW50U2V0ID0gbmV3IEhhc2hTZXQ8
UmVuZGVyQm94Kj47CiAgICAgICAgIGdQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPnNldCh0
aGlzLCBkZXNjZW5kYW50U2V0KTsKICAgICB9Ci0gICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRhbnRT
ZXQtPmFkZChkZXNjZW5kYW50KS5zZWNvbmQ7CisgICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRhbnRT
ZXQtPmFkZChkZXNjZW5kYW50KS5pc05ld0tleTsKICAgICBpZiAoIWFkZGVkKSB7CiAgICAgICAg
IEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+Z2V0KGRlc2NlbmRhbnQpKTsKICAg
ICAgICAgQVNTRVJUKGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5nZXQoZGVzY2VuZGFudCkt
PmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggYjI1NDM3YzU1YzFmYzQ2NmZjN2ExMTk2NzI0OWZi
YTE3OGI1NTQwNy4uNGVhZDg4ZDZhMDJhYTBmMDZjYzBiZmE0NzM1Mjc2Y2VlNDg3YzIxOCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5j
cHAKQEAgLTY2MiwxNCArNjYyLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lk
dGhGb3JUZXh0UnVuKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJpZGlSdW4qIHJ1CiAgICAgcnVu
LT5tX2JveC0+c2V0TG9naWNhbFdpZHRoKHJlbmRlcmVyLT53aWR0aChydW4tPm1fc3RhcnQsIHJ1
bi0+bV9zdG9wIC0gcnVuLT5tX3N0YXJ0LCB4UG9zLCBsaW5lSW5mby5pc0ZpcnN0TGluZSgpLCAm
ZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3cpICsgaHlwaGVuV2lkdGgpOwogICAgIGlmICgh
ZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlz
VGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJh
dG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwg
bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3co
KSkpLmZpcnN0OworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRl
cmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1bi0+bV9ib3gp
LCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5cGhPdmVyZmxv
dygpKSkuaXRlcjsKICAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuZmlyc3QuaXNFbXB0eSgpKTsK
ICAgICAgICAgY29weVRvVmVjdG9yKGZhbGxiYWNrRm9udHMsIGl0LT5zZWNvbmQuZmlyc3QpOwog
ICAgICAgICBydW4tPm1fYm94LT5wYXJlbnQoKS0+Y2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGlu
ZUhlaWdodEFuZEJhc2VsaW5lKCk7CiAgICAgfQogICAgIGlmICgoZ2x5cGhPdmVyZmxvdy50b3Ag
fHwgZ2x5cGhPdmVyZmxvdy5ib3R0b20gfHwgZ2x5cGhPdmVyZmxvdy5sZWZ0IHx8IGdseXBoT3Zl
cmZsb3cucmlnaHQpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPm1fYm94LT5pc1RleHQoKSk7Ci0g
ICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRl
eHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihW
ZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5maXJzdDsK
KyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0g
dGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWly
KFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXI7
CiAgICAgICAgIGl0LT5zZWNvbmQuc2Vjb25kID0gZ2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVu
LT5tX2JveC0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggMWM4OTJjODhlYzIz
NDBlM2ZiOTNlY2FkZjEyYjk1ODQ3MWE4NjAwNC4uMGRmMDJhZjlhMDhhM2RlZGY2NTVjOThjYmRk
NTU3ZjJhYTBjNzY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcApAQCAtMjY1LDggKzI2NSw4IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2hl
Y2tJbnZhbGlkUmVnaW9ucygpCiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5j
eU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCiB7Ci0gICAg
c3RkOjpwYWlyPFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJlYWQpOwotICAg
IGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgUmVuZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1Ro
cmVhZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkgewogICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBmaXJzdCB0aW1lIHdlIHNlZSB0aGlzIGRlcGVuZGVuY3kuIE1ha2Ugc3VyZSB3ZSByZWNhbGN1
bGF0ZSBhbGwgdGhlIGRlcGVuZGVuY2llcy4KICAgICAgICAgdmlldygpLT5zZXRJc1JlbmRlckZs
b3dUaHJlYWRPcmRlckRpcnR5KHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggYWYyNjg3NTAwZTljNmExZDViN2VjMmExODE3OGU4YWIz
YmY5ZjBjYi4uNTViNTdiN2MzZTBhY2JkZjZhYWEwODFjYWQzYTA4ODc5NTQzN2U2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTI0Niw3ICsyNDYsNyBA
QCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJSZWdpb246OnNldFJlbmRlckJveFJlZ2lvbklu
Zm8oY29uc3QgUmVuZGVyQm94KiBib3gsCiAgICAgaWYgKCFtX2lzVmFsaWQgfHwgIW1fZmxvd1Ro
cmVhZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5m
bz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgbnVsbHB0cikuZmly
c3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBt
X3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAg
IGlmIChib3hJbmZvKQogICAgICAgICAqYm94SW5mbyA9IFJlbmRlckJveFJlZ2lvbkluZm8obG9n
aWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJ
bnNldCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggOTA3ZmUxNjc3YjE3MDQ4
MmM2ZjRhYzU3ZWQ5NzFkNTcyMTkxYWU0MS4uYmEwNjg5Y2JlOWI1ODUzNDZhNGExYWI2YjA5MmU0
OWUyNmY5OGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJTdHlsZSoKICAgICBpZiAoZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAmJiBvYmplY3RCb3VuZGluZ0Jv
eC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE93blB0cjxHcmFkaWVu
dERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZChvYmplY3QsIG51bGxwdHIp
LmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdyYWRpZW50RGF0YSA9
IG1fZ3JhZGllbnRNYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlm
ICghZ3JhZGllbnREYXRhKQogICAgICAgICBncmFkaWVudERhdGEgPSBhZG9wdFB0cihuZXcgR3Jh
ZGllbnREYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGJlYzBmMzM3NGY0NjQzNjJhOWE1
ODNlYWYxOTgzNTAyODFiOGQwMmMuLjBiNGJiNGY5NDgyYzZhMmQyYjA4OGFhYTgxOTgxMzhlNTMx
NDk3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlclN0eWxlKgogICAgIGlmIChtX2F0dHJpYnV0ZXMucGF0dGVyblVuaXRzKCkgPT0gU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5n
Qm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPFBhdHRl
cm5EYXRhPiYgcGF0dGVybkRhdGEgPSBtX3BhdHRlcm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0ciku
Zmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1f
cGF0dGVybk1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFw
YXR0ZXJuRGF0YSkKICAgICAgICAgcGF0dGVybkRhdGEgPSBhZG9wdFB0cihuZXcgUGF0dGVybkRh
dGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAppbmRleCA0OGRiNjk4MDMy
MjJhNGNiMzlhZDFhODUwMGZhNmM2Mzg0ODIwNjg5Li42YWUzNjE1MTJhNmVhZmM5NDE2NTUyODU3
ZmRmYjRiNzRjMWJkMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAg
LTEzMSw5ICsxMzEsOSBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnNldEl0
ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdQogICAgIH0KICAgICBtX2N1
cnJlbnRMZW5ndGggPSBuZXdMZW5ndGg7CiAKLSAgICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwot
ICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKLSAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNv
bmQgPSB2YWx1ZTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0tl
eSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXItPnNlY29uZCA9IHZhbHVlOwogCiAgICAgaW52YWxp
ZGF0ZUl0ZXJhdG9yKCk7CiAKQEAgLTE3MSw4ICsxNzEsOCBAQCB2b2lkIFN0b3JhZ2VNYXA6Omlt
cG9ydEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
Ly8gQmUgc3VyZSB0byBjb3B5IHRoZSBrZXlzL3ZhbHVlcyBhcyBpdGVtcyBpbXBvcnRlZCBvbiBh
IGJhY2tncm91bmQgdGhyZWFkIGFyZSBkZXN0aW5lZAogICAgIC8vIHRvIGNyb3NzIGEgdGhyZWFk
IGJvdW5kYXJ5Ci0gICAgcGFpcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVk
Q29weSgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7ICAvLyBU
cnVlIGlmIHRoZSBrZXkgZGlkbid0IGV4aXN0IHByZXZpb3VzbHkuCisgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29w
eSgpLCB2YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0tleSk7IC8vIFRydWUgaWYgdGhlIGtleSBkaWRuJ3QgZXhpc3QgcHJldmlvdXNs
eS4KIAogICAgIEFTU0VSVChtX2N1cnJlbnRMZW5ndGggKyBrZXkubGVuZ3RoKCkgPj0gbV9jdXJy
ZW50TGVuZ3RoKTsKICAgICBtX2N1cnJlbnRMZW5ndGggKz0ga2V5Lmxlbmd0aCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA4MTBiOTY2NWMx
ZmE4MjBlMDE5NTRmNzFmMTdhZWM3N2U1NWRkMjVmLi4xNTFmZDMxYTBkYmE2M2QwMDYzZmZjNzVi
NTE3NzU0OTJmMWE5MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRl
bnNpb25zLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU1ZHU3R5bGVkCiAg
ICAgLy8gbWFwIGlmIHRoZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiBTbyB3ZSBhZGQgd2l0aCBh
IHZhbHVlIG9mIDAsIGFuZCBpdCBlaXRoZXIgZmluZHMgdGhlCiAgICAgLy8gZXhpc3RpbmcgZWxl
bWVudCBvciBhZGRzIGEgbmV3IG9uZSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFRoZSAiLmZpcnN0
LT5zZWNvbmQiIGlkaW9tIGdldHMKICAgICAvLyB1cyB0byB0aGUgaXRlcmF0b3IgZnJvbSBhZGQn
cyByZXN1bHQsIGFuZCB0aGVuIHRvIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGhhc2ggdGFibGUuCi0g
ICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwg
MCkuZmlyc3QtPnNlY29uZDsKKyAgICBTVkdQZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRp
bmdSZXNvdXJjZXMuYWRkKGlkLCAwKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFzZXQpCiAgICAg
ICAgIHNldCA9IG5ldyBTVkdQZW5kaW5nRWxlbWVudHM7CiAgICAgc2V0LT5hZGQoZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3MTIyMDBjZTY5M2M5ZDVk
YWIxODBhMDcxNWZlYjdhMWY5ZjYzNTMzLi5kYzE2MGRmM2RjMDQwZTRjNDEwM2ExZjg0Y2VkNjAw
NTc1MzQ0YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg5OSw5
ICs4OTksOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUsIHZhbHVlKTsKLSAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsICIgKyB2
YWx1ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZXF1ZXN0SGVh
ZGVycy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAg
ICByZXN1bHQuaXRlci0+c2Vjb25kICs9ICIsICIgKyB2YWx1ZTsKIH0KIAogU3RyaW5nIFhNTEh0
dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDE1NGI2N2U5MmQzMmM3
ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEuLjRiM2I3MDA1OGFlODM0ZmM1NzUwNTU3NjQ5NWVh
YTE4YTA1MzkyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMzUw
LDcgKzM1MCw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgICAgIC8vIElm
IHRoZXJlIGFyZSBzZXZlcmFsIG5vZGVzIHdpdGggdGhlIHNhbWUgaWQsIGlkKCkgc2hvdWxkIHJl
dHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAgICAvLyBJbiBXZWJLaXQsIGdldEVsZW1lbnRCeUlk
IGJlaGF2ZXMgc28sIHRvbywgYWx0aG91Z2ggaXRzIGJlaGF2aW9yIGluIHRoaXMgY2FzZSBpcyBm
b3JtYWxseSB1bmRlZmluZWQuCiAgICAgICAgIE5vZGUqIG5vZGUgPSBjb250ZXh0U2NvcGUtPmdl
dEVsZW1lbnRCeUlkKFN0cmluZyhpZExpc3QuY2hhcmFjdGVycygpICsgc3RhcnRQb3MsIGVuZFBv
cyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgIGlmIChub2RlICYmIHJlc3VsdFNldC5hZGQobm9kZSku
c2Vjb25kKQorICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKG5vZGUpLmlzTmV3S2V5
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKICAgICAgICAgCiAgICAgICAgIHN0
YXJ0UG9zID0gZW5kUG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAppbmRleCBkOWQxZmQ0N2Q2
NjRmMGM5YmRmMTQ2YWMyMWRkOTNhZGZhYjRhMjA0Li5iNzA2YmNhYTc1YTFlNmRmYTYxYzdhMmIw
NzQzZDllMjY4Y2NhZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcApAQCAtMTM1LDcgKzEz
NSw3IEBAIHZvaWQgTG9jYXRpb25QYXRoOjpldmFsdWF0ZShOb2RlU2V0JiBub2RlcykgY29uc3QK
IAogICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgbWF0
Y2hlcy5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG1hdGNoZXNbbm9kZUluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9y
RHVwbGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAg
ICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQu
YWRkKG5vZGUpLmlzTmV3S2V5KQogICAgICAgICAgICAgICAgICAgICBuZXdOb2Rlcy5hcHBlbmQo
bm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVk
aWNhdGUuY3BwCmluZGV4IDU4Y2Q4Nzk4ZWIzNjNhZWJiNmI0OGMzMzk1NjcwMGZmMTA3NWE1Nzcu
LmNmMWI5YzdkMmUwN2E3NzBhMTdkMDU0Y2JiYTQ5M2RjZTE4Yjk2OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIFZhbHVlIFVuaW9uOjpl
dmFsdWF0ZSgpIGNvbnN0CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaHNOb2Rl
cy5zaXplKCk7ICsraSkgewogICAgICAgICBOb2RlKiBub2RlID0gcmhzTm9kZXNbaV07Ci0gICAg
ICAgIGlmIChub2Rlcy5hZGQobm9kZSkuc2Vjb25kKQorICAgICAgICBpZiAobm9kZXMuYWRkKG5v
ZGUpLmlzTmV3S2V5KQogICAgICAgICAgICAgcmVzdWx0U2V0LmFwcGVuZChub2RlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2RlcnMu
aAppbmRleCBhMmZmYTBmMjUwYmU4OTA2MTI0MDcxY2Q0ODI5ZDc4OGI3YjhhZjM4Li5kMWZlMjMz
ZWUwYWMxYjAzZjMxMDkzNzhiZTYyYmI5MzJjOWMzNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0xNjEsNyArMTYxLDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhh
c2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGlm
ICghdGVtcEhhc2hNYXAuYWRkKGtleSwgdmFsdWUpLnNlY29uZCkgeworICAgICAgICAgICAgaWYg
KCF0ZW1wSGFzaE1hcC5hZGQoa2V5LCB2YWx1ZSkuaXNOZXdLZXkpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgaGFzaCBtYXAgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCiAg
ICAgICAgICAgICAgICAgZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmNwcAppbmRleCAzYzJmMTRjZWQwM2U4ZjA5YmYwNTM5Njg4OWIxODRlZjhiODVjNTllLi43
NmEwYzFhMGRmZWI5NTRlZmU1NWRmYWZhZDdhYjI3NzY5OTk4ODFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTEwMCwxNSArMTAwLDE1
IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU+IENv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKFJ1bkxvb3AqIHJ1bkxvb3Ap
CiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN5bmNNZXNzYWdlU3RhdGVNYXBNdXRleCgpKTsK
LSAgICBwYWlyPFN5bmNNZXNzYWdlU3RhdGVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBz
eW5jTWVzc2FnZVN0YXRlTWFwKCkuYWRkKHJ1bkxvb3AsIDApOworICAgIFN5bmNNZXNzYWdlU3Rh
dGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW5jTWVzc2FnZVN0YXRlTWFwKCkuYWRkKHJ1bkxv
b3AsIDApOwogCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVChyZXN1
bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXIt
PnNlY29uZCk7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vjb25kOwogICAgIH0KIAog
ICAgIFJlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBzeW5jTWVzc2FnZVN0YXRlID0gYWRvcHRSZWYo
bmV3IFN5bmNNZXNzYWdlU3RhdGUocnVuTG9vcCkpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25k
ID0gc3luY01lc3NhZ2VTdGF0ZS5nZXQoKTsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gc3lu
Y01lc3NhZ2VTdGF0ZS5nZXQoKTsKIAogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJlbGVh
c2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlv
bmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwCmlu
ZGV4IDJmOTA1ZWM2YTEyNDg3MGQ4OTdiYTM3MDA0YmU4Y2FkMmZiMmMxNzQuLmM3OGRhNmY2YWQy
MzAzYWVhNjBhOWM5Yjc1YWU2OGRkN2I2Nzk0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L011dGFibGVEaWN0aW9uYXJ5LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIE11dGFibGVEaWN0aW9u
YXJ5Ojp+TXV0YWJsZURpY3Rpb25hcnkoKQogCiBib29sIE11dGFibGVEaWN0aW9uYXJ5OjphZGQo
Y29uc3QgU3RyaW5nJiBrZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8TWFw
VHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOwotICAg
IHJldHVybiByZXN1bHQuc2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X21hcC5hZGQoa2V5LCBpdGVtKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3S2V5OwogfQogCiBi
b29sIE11dGFibGVEaWN0aW9uYXJ5OjpzZXQoY29uc3QgU3RyaW5nJiBrZXksIEFQSU9iamVjdCog
aXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fbWFwLnNldChrZXksIGl0ZW0pOwotICAgIHJldHVybiByZXN1bHQuc2Vjb25kOworICAgIE1h
cFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5zZXQoa2V5LCBpdGVtKTsKKyAgICByZXR1
cm4gcmVzdWx0LmlzTmV3S2V5OwogfQogCiB2b2lkIE11dGFibGVEaWN0aW9uYXJ5OjpyZW1vdmUo
Y29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNl
ck1lc3NhZ2VDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVy
cy5oCmluZGV4IDk2NzJmMjhkZjM3YWFiOTExZmRjMjgxYmUyYzY4MjAwMDVjMmFiZjEuLjljZjQ2
MDlhNDU1YjgwZTlhMzFjMWU2YzE2NzUxMzBhNjk4ZGQ5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCkBAIC0yODUsOCArMjg1LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VDb2RlcikpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxJ
bW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFw
LnNldChrZXksIGVsZW1lbnQucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5zZWNvbmQpCisgICAgICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5zZXQoa2V5LCBlbGVtZW50LnJlbGVhc2UoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5Y2U1NDQwN2U1NjlkNTAzMGY4MWRhYmExZWZkY2I5
OWJmYjBhMGY5Li5hMThiNDZlNjFmNmJjY2FjMDY3YjE3OTY3MDI5NjJhZjhlMzk4MzUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjcxLDE4
ICsyNzEsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEJhY2tGb3J3YXJkSXRlbSh1aW50
NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWwKICAgICBNRVNTQUdFX0NIRUNLX1VS
TChvcmlnaW5hbFVSTCk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKIAotICAgIHN0ZDo6
cGFpcjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmFkZChpdGVtSUQsIDApOwotICAgIGlmIChyZXN1bHQu
c2Vjb25kKSB7Ci0gICAgICAgIC8vIE5ldyBpdGVtLgotICAgICAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgdXJsLCB0
aXRsZSwgYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSwgaXRl
bUlEKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmFkZChpdGVtSUQsIDApOworICAgIGlmIChyZXN1bHQu
aXNOZXdLZXkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgdXJsLCB0aXRsZSwgYmFja0ZvcndhcmREYXRh
LmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSwgaXRlbUlEKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIC8vIFVwZGF0ZSBleGlzdGluZyBpdGVtLgotICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7Ci0gICAgcmVzdWx0LmZpcnN0
LT5zZWNvbmQtPnNldFVSTCh1cmwpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRUaXRs
ZSh0aXRsZSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldEJhY2tGb3J3YXJkRGF0YShi
YWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpKTsKKyAgICByZXN1
bHQuaXRlci0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7CisgICAgcmVzdWx0
Lml0ZXItPnNlY29uZC0+c2V0VVJMKHVybCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZC0+c2V0
VGl0bGUodGl0bGUpOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQtPnNldEJhY2tGb3J3YXJkRGF0
YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpKTsKIH0KIAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNlYmJiMzBjMWFmM2I0ZDljMWQyMzliMDhmYmY0ZTVh
ZTc2ZWY0NmUuLmRhNzIyNjllODY1Yzc4NjNmMTk5NDNkMDkwZmI0NWMwMTA0NDM4NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtNjcsMTIg
KzY3LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKE5vZGUqCiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVDYWNoZTo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKG5vZGUsIDApOwotICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlPihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJl
c3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChub2RlLCAwKTsKKyAgICBpZiAoIXJl
c3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPihyZXN1bHQuaXRlci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNy
ZWF0ZShub2RlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7
CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7CiAgICAgcmV0dXJu
IG5vZGVIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGU5NGVkZmQzNGI4Yjg5ZDM2ZTlkM2U3ZmRiMGM0
N2EwMDUyNWUxMTkuLjhmNTE1NjlkYzQwODZlODQ3NGFlODM1OWIyZjNmNmY2NDQ1MzcwMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC00
NiwxMiArNDYsMTIgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShSYW4KICAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVDYWNoZTo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJhbmdlLCAwKTsKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBET01IYW5kbGVDYWNo
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJhbmdlLCAwKTsKKyAg
ICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpjcmVhdGUocmFuZ2UpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmFu
Z2VIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IHJhbmdlSGFuZGxlLmdl
dCgpOwogICAgIHJldHVybiByYW5nZUhhbmRsZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyN2U0YzcyZWExZjc0ZDVlMTE1NTQ1NGI4YTM1
YzljYWUzNjlhOGVjLi5jYzEzOWJlMDY4OGJmYmFjNmQwOTdjM2ZkODkwZjczMmI3ZGQxYzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
Ym9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIG1fbm90aWZpY2F0aW9uTWFwLnNldChub3RpZmljYXRp
b24sIG5vdGlmaWNhdGlvbklEKTsKICAgICBtX25vdGlmaWNhdGlvbklETWFwLnNldChub3RpZmlj
YXRpb25JRCwgbm90aWZpY2F0aW9uKTsKICAgICAKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFw
OjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuZmlyc3Q7Cisg
ICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNv
bnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0
b3I8dWludDY0X3Q+KCkpLml0ZXI7CiAgICAgaXQtPnNlY29uZC5hcHBlbmQobm90aWZpY2F0aW9u
SUQpOwogICAgIAogICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3Rp
ZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uVVJMKCkuc3RyaW5nKCksIG5vdGlm
aWNhdGlvbi0+cmVwbGFjZUlkKCksIG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2Ut
PnBhZ2VJRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGMxYmEwNTBjZjZkYTFkN2FhMTYxNzYxNDM3ZjRjNDhkNWFkZTIxZDEuLmJlYmI5NmQ1YWJlY2I5
YjAwNDBkNTVhZWM4ODgzOGQ1NTY0MWQwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtNTE4LDE2ICs1MTgsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVh
dGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNl
IGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBs
aW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFu
ZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCi0gICAgc3RkOjpwYWlyPEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9w
YWdlTWFwLmFkZChwYWdlSUQsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAg
IEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOworICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFw
LmFkZChwYWdlSUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNT
RVJUKCFyZXN1bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9
IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOwogCiAgICAgICAgIC8vIEJhbGFu
Y2VkIGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJlbW92ZVdlYlBhZ2UuCiAgICAgICAgIGRp
c2FibGVUZXJtaW5hdGlvbigpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmlyc3QtPnNl
Y29uZCk7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyLT5zZWNvbmQpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3M6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQpAQCAtNzM5LDEzICs3MzksMTMg
QEAgV2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCh1aW50NjRfdCBw
YWdlR3JvdXBJRCkKIAogV2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91
cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBwYWdlR3JvdXBEYXRhKQogewotICAgIHN0ZDo6cGFp
cjxIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID46Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBtX3BhZ2VHcm91cE1hcC5hZGQocGFnZUdyb3VwRGF0YS5wYWdlR3Jv
dXBJRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1
bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gV2ViUGFn
ZUdyb3VwUHJveHk6OmNyZWF0ZShwYWdlR3JvdXBEYXRhKTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VH
cm91cE1hcC5hZGQocGFnZUdyb3VwRGF0YS5wYWdlR3JvdXBJRCwgMCk7CisgICAgaWYgKHJlc3Vs
dC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyLT5zZWNvbmQpOworICAg
ICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShwYWdl
R3JvdXBEYXRhKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0
KCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBi
b29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGZhMzg4OTFjZDNmZmY0OGQ5ZDg3ZDBiOGU4ZTkxYWYxMTVjZDVlYjQuLmVhYTFhYmFkMjFlNGEy
ZTNlYjU1ZTJlNDQ2ZTJjMzBiNzg4NzJmNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0yNyAgQ2FpbyBN
YXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZl
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdElu
SXNvbGF0ZWRXb3JsZCk6CisKIDIwMTItMDMtMjcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHN1cHByZXNzIGRlYnVn
IG91dHB1dCBmcm9tIHJ1bi1zYWZhcmkgb24gcmVzdWx0cyBmaWxlCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDA1ODM0ODY4NDlkNWM3ZWY1NTRjNjc3YTZjMjNmNGZjOThiOGQxYjku
LmNjYzQ2ZWQzNjE2NDM2OTM2MzQzYzhmYmQ4ZjdhMzc5Mzc2YjYzYzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoSlNDb250ZXh0UmVmIGNvbnRleHQs
IHUKICAgICBpZiAoIXdvcmxkSUQpCiAgICAgICAgIHdvcmxkLmFkb3B0KFdLQnVuZGxlU2NyaXB0
V29ybGRDcmVhdGVXb3JsZCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tC
dW5kbGVTY3JpcHRXb3JsZFJlZj4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQs
IDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29y
bGRSZWY+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyLT5zZWNv
bmQ7CiAgICAgICAgIGlmICghd29ybGRTbG90KQogICAgICAgICAgICAgd29ybGRTbG90LmFkb3B0
KFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpKTsKICAgICAgICAgd29ybGQgPSB3b3Js
ZFNsb3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134345</attachid>
            <date>2012-03-28 11:17:44 -0700</date>
            <delta_ts>2012-03-28 11:31:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120328151741.patch</filename>
            <type>text/plain</type>
            <size>172920</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YzcxNzYyNDNlODE4ZDY0MDZjYjE1ZGJmMTQxNDRjNGY4YjQ0MDczLi4wYzZkODYyNWUwODQ4MTI1
ZjcyZjQ5ODcyMTc0OTA5YWNmYjFiZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSBpbnN0ZWFkIG9mIGEgc2ltcGxlCisgICAgICAgIHR5cGVkZWYuCisKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERh
dGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExv
YWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFy
YW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpT
Qzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9u
YXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZh
bHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6CisgICAgICAgICogcnVu
dGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdlYWtHQ01hcCk6CisgICAgICAgIChKU0M6Oldl
YWtHQ01hcDo6QWRkUmVzdWx0OjpBZGRSZXN1bHQpOgorICAgICAgICAoQWRkUmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDTWFwOjphZGQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnNl
dCk6CisgICAgICAgICogdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmg6CisgICAgICAgIChKU0M6OlBy
b2ZpbGVUcmVlTm9kZTo6c2FtcGxlQ2hpbGQpOgorCiAyMDEyLTAzLTI3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIE9TUiBleGl0IHNob3VsZCBub3QgZ2Vu
ZXJhdGUgYW4gZXhpdCBmb3IgdmFyaWFibGVzIG9mIGlubGluZWVzIGlmIHRoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkODBh
Yjg0ZDA3OTU2ZjI1MmY5MWE4ZDQwMGJlODQ5OTRkOWM5MmE1Li44ZmQzMDA1NmFhYjg2OTVkZDZl
ZjE5OThlMTE2YTFjMWQ4YjViODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAzLTI4ICBD
YWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3Jp
cHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgSGFzaFRhYmxlPD46OmFkZCgpIGFuZCBkZXJpdmF0ZSBmdW5jdGlvbnMgcmV0dXJu
IGFuIEFkZFJlc3VsdCBzdHJ1Y3QgaW5zdGVhZAorICAgICAgICBvZiBhIHBhaXIuIFRoaXMgc3Ry
dWN0IGNvbnRhaW5zIGNvbnRhaW5zICdpdGVyJyBhbmQgJ2lzTmV3S2V5JyBtZW1iZXJzLCB0aGF0
IGFyZQorICAgICAgICBtb3JlIHJlYWRhYmxlIGF0IGNhbGxzaXRlcyB0aGFuIHByZXZpb3VzICdm
aXJzdCcgYW5kICdzZWNvbmQnLgorCisgICAgICAgICogd3RmL0hhc2hDb3VudGVkU2V0Lmg6Cisg
ICAgICAgIChIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAg
KiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAoSGFzaE1hcCk6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKEhh
c2hTZXQpOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAq
IHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlOjpBZGRSZXN1bHQ6OkFk
ZFJlc3VsdCk6CisgICAgICAgIChBZGRSZXN1bHQpOgorICAgICAgICAoSGFzaFRhYmxlKToKKyAg
ICAgICAgKFdURjo6SGFzaFRhYmxlOjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAg
ICAgIChXVEY6Ojo6YWRkUGFzc2luZ0hhc2hDb2RlKToKKyAgICAgICAgKiB3dGYvTGlzdEhhc2hT
ZXQuaDoKKyAgICAgICAgKFdURjo6TGlzdEhhc2hTZXQ6OkFkZFJlc3VsdDo6QWRkUmVzdWx0KToK
KyAgICAgICAgKEFkZFJlc3VsdCk6CisgICAgICAgIChMaXN0SGFzaFNldCk6CisgICAgICAgIChX
VEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAqIHd0
Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjo6OnNldCk6
CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQp
OgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRp
ZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAg
IChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6
CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RGOjpBdG9taWNT
dHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IFBsYXRmb3Jt
U3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzZjg3Y2M2MDQzY2ViNTdkNzMyZTcwNTdjMDQyMmJk
ZTI4ZDlkZTEuLjk3OTBjNjg1MzgzZTg4MTNlNjE2ZTcxMmJiNzFmMTM5NzY4NTc2YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNzMgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2
ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNo
TWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8g
dXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRlc3RzLCBqdXN0IGEgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21p
dW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1b3RhVHJhY2tlcjo6dXBk
YXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFi
bGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6Z2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkZW50aWZp
ZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAg
KE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKToK
KyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZh
Y2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEp
OgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JT
dHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBkb20vQ2hl
Y2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9u
KToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRl
cjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2
ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6CisgICAgICAgICogZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5
VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5T
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24pOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6
OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9TdHls
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0
dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0
OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
R3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRk
VXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyQXJyYXkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRpbGVyOjphZGRUaWxlSm9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpmaW5kT3JNYWtlQ2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERlcml2
ZWRGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFi
aWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJBVFNVSS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplQVRTVVN0eWxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1
dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0U3R5bGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFk
ZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6YWRkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaDoKKyAgICAgICAgKEhUVFBIZWFk
ZXJNYXApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVy
RmllbGQpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKToKKyAgICAgICAgKiBwbHVnaW5z
L3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZFBlcmNl
bnRIZWlnaHREZXNjZW5kYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5l
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6c2V0SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjppbXBvcnRJdGVtKToKKyAgICAgICAg
KiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldFJl
cXVlc3RIZWFkZXJJbnRlcm5hbCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHht
bC9YUGF0aFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0aW9uUGF0aDo6
ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6VW5pb246OmV2YWx1YXRlKToKKwogMjAxMi0wMy0yOCAgQW5kcmV5IEtv
c3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG9u
bHkgdXBkYXRlIFRpbWVsaW5lIG92ZXJ2aWV3IHdoZW4gcmVhbGx5IG5lZWRlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBlMjExYzliMjA0ZDA2MDI2ZTVkMTFhZWU0OTBkNWZkYWJkZjJi
OGU0Li45ZWUwMTk0MjFmN2Q4YmU3NDFmNmFjZDMyOGEwN2Y4MmRmMjRjNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTI4ICBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBz
cmMvV2ViSFRUUExvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRkSGVhZGVyKToKKyAg
ICAgICAgKiBzcmMvV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZTo6YWRkSFRUUEhlYWRlckZpZWxkKToKKwogMjAxMi0wMy0yOCAgRmFkeSBTYW11ZWwg
IDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEVuYWJsZSBWaWV3
cG9ydCBkZWZpbmUgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDZiMGM1ZWIwZjlkMWEw
NDc3ZWJjZGUyYTdmZjNkZTkwMGRjMWZmZmMuLjM0ZTU2NDJmMzQzN2VjNjFiMjIzMmQzZGM3N2Nh
Zjk0Njc2Y2MzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0y
OCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRl
c2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgor
CisgICAgICAgICogV2ViS2l0Q09NQVBJLmNwcDoKKyAgICAgICAgKGNsYXNzRmFjdG9yeSk6CisK
IDIwMTItMDMtMjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBG
cmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uIHVzZXMgRnJhbWUgZm9yIGNvbnRleHQg
cmF0aGVyIHRoYW4gRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhNWVkY2U3YjM4YjE5NWQ4MTY5ODRh
NzgxZWZjNTVjMjc2YjZjOTA0Li45ODMyODExM2U3N2MzNzEwM2M4NGViYzg1NDNkNjFlNTdiMDQ4
N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2Vs
byBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmpl
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6U3luY01l
c3NhZ2VTdGF0ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9NdXRhYmxlRGljdGlv
bmFyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok11dGFibGVEaWN0aW9uYXJ5OjphZGQpOgorICAg
ICAgICAoV2ViS2l0OjpNdXRhYmxlRGljdGlvbmFyeTo6c2V0KToKKyAgICAgICAgKiBTaGFyZWQv
VXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VEZWNvZGVy
OjpiYXNlRGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKToKKwogMjAxMi0wMy0y
OCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBG
aXggUVdBUk4gaW4gdGVzdF9sb2FkSWdub3JlRW1wdHlVcmwgQVBJIHRlc3QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDYxM2U1MzhiYzc1ZGIz
NjlmN2RmZjdiNjc5ODkyY2I3MDJiMzIxMzYuLmM1YmYxYTZmNDI1OTg1YjhlNThhZTA1MzdhM2I2
MmY4YmViYmVhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdl
YWtIYW5kbGVPd25lciB7CiAgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gZW1wdHk7Ci0gICAgICAgICAgICBtX3Byb3BlcnR5TWFwLmFkZChwcm9wZXJ0
eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgb3duZXIs
IHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuYWRkKHByb3BlcnR5TmFtZS5pbXBs
KCksIGVtcHR5KS5pdGVyLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2xhc3NSZWYuY3BwCmluZGV4IDVjMjQ5YWJhZjY1ZWJiYTg5MmY5ZjUzMDMzNGM1ZGJjMGQ5NWI5
OWQuLjNkM2U3ZDUwNmU1YjljNTkxNTBkYTRiNTg3Y2Q2YTUyYmU0MWNhMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIE9wYXF1
ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6SlNHbG9i
YWxEYXRhJiwgT3BhcXVlSlNDCiAKIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlND
bGFzczo6Y29udGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewotICAgIE93blB0cjxPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFx
dWVKU0NsYXNzRGF0YS5hZGQodGhpcywgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25Q
dHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXItPnNlY29uZDsK
ICAgICBpZiAoIWNvbnRleHREYXRhKQogICAgICAgICBjb250ZXh0RGF0YSA9IGFkb3B0UHRyKG5l
dyBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKSk7CiAg
ICAgcmV0dXJuICpjb250ZXh0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNGE2ZjQ2NTNlYWI4
OTJmYzZkYTBkYjkzY2I0OWNiMTU3MWE2YWRmYi4uMDUzMTE2NDhjYmVlMmFkYWRhNGU4NWE0YWI1
OWU2ZTRmMTgwZGVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIwMCwxMCArMjAwLDEwIEBAIGJv
b2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9v
bCBpc0NvbnN0YW50LCBSZWdpc3RlCiB7CiAgICAgaW50IGluZGV4ID0gbV9jYWxsZWVSZWdpc3Rl
cnMuc2l6ZSgpOwogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIGlzQ29uc3Rh
bnQgPyBSZWFkT25seSA6IDApOwotICAgIHBhaXI8U3ltYm9sVGFibGU6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKKyAg
ICBTeW1ib2xUYWJsZTo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50
LmltcGwoKSwgbmV3RW50cnkpOwogCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAg
IHIwID0gJnJlZ2lzdGVyRm9yKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldEluZGV4KCkpOworICAg
IGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CisgICAgICAgIHIwID0gJnJlZ2lzdGVyRm9yKHJlc3Vs
dC5pdGVyLT5zZWNvbmQuZ2V0SW5kZXgoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTIxNSw5ICsyMTUsOSBAQCBpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZh
cihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQogewogICAgIGludCBp
bmRleCA9IHN5bWJvbFRhYmxlKCkuc2l6ZSgpOwogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50
cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOwotICAgIHBhaXI8U3ltYm9sVGFi
bGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBs
KCksIG5ld0VudHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIGluZGV4ID0g
cmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0SW5kZXgoKTsKKyAgICBTeW1ib2xUYWJsZTo6QWRkUmVz
dWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwor
ICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyLT5z
ZWNvbmQuZ2V0SW5kZXgoKTsKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTk2OCwyNCArOTY4
LDI0IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90
RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kCiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RyaW5nSW1w
bCogcmVwID0gaWRlbnQuaW1wbCgpOwotICAgIHBhaXI8SWRlbnRpZmllck1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1faWRlbnRpZmllck1hcC5hZGQocmVwLCBtX2NvZGVCbG9jay0+bnVt
YmVyT2ZJZGVudGlmaWVycygpKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgLy8gbmV3IGVudHJ5
CisgICAgSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faWRlbnRpZmllck1hcC5h
ZGQocmVwLCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKKyAgICBpZiAocmVz
dWx0LmlzTmV3S2V5KQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJZGVudGlm
aWVyKG1fZ2xvYmFsRGF0YSwgcmVwKSk7CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNv
bmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudFZhbHVlKEpTVmFsdWUgdikKIHsKICAgICBpbnQg
aW5kZXggPSBtX25leHRDb25zdGFudE9mZnNldDsKIAotICAgIHBhaXI8SlNWYWx1ZU1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHYp
LCBtX25leHRDb25zdGFudE9mZnNldCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICBK
U1ZhbHVlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjpl
bmNvZGUodiksIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5
KSB7CiAgICAgICAgIG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzLmFwcGVuZChGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCArIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKICAgICAgICAgKyttX25leHRD
b25zdGFudE9mZnNldDsKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KEpTVmFsdWUo
dikpOwogICAgIH0gZWxzZQotICAgICAgICBpbmRleCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOwor
ICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAKICAgICByZXR1cm4gJm1fY29u
c3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KQEAgLTExMzIsNyArMTEzMiw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJs
ZSBudW1iZXIpCiAgICAgLy8gd29yayBjb3JyZWN0bHkgd2l0aCBOYU4gYXMgYSBrZXkuCiAgICAg
aWYgKGlzbmFuKG51bWJlcikgfHwgbnVtYmVyID09IEhhc2hUcmFpdHM8ZG91YmxlPjo6ZW1wdHlW
YWx1ZSgpIHx8IEhhc2hUcmFpdHM8ZG91YmxlPjo6aXNEZWxldGVkVmFsdWUobnVtYmVyKSkKICAg
ICAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNOdW1iZXIobnVtYmVyKSk7Ci0gICAgSlNWYWx1
ZSYgdmFsdWVJbk1hcCA9IG1fbnVtYmVyTWFwLmFkZChudW1iZXIsIEpTVmFsdWUoKSkuZmlyc3Qt
PnNlY29uZDsKKyAgICBKU1ZhbHVlJiB2YWx1ZUluTWFwID0gbV9udW1iZXJNYXAuYWRkKG51bWJl
ciwgSlNWYWx1ZSgpKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQogICAgICAg
ICB2YWx1ZUluTWFwID0ganNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0
LCB2YWx1ZUluTWFwKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIpCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1h
cCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsK
KyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIu
aW1wbCgpLCAwKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFzdHJpbmdJbk1hcCkKICAgICAgICAg
c3RyaW5nSW5NYXAgPSBqc093bmVkU3RyaW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci51c3Ry
aW5nKCkpOwogICAgIHJldHVybiBlbWl0TG9hZChkc3QsIEpTVmFsdWUoc3RyaW5nSW5NYXApKTsK
QEAgLTE2NDgsNyArMTY0OCw3IEBAIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25z
dGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCiAKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAg
ICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1w
bCgpLCAwKS5maXJzdC0+c2Vjb25kOworICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0
cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXItPnNlY29uZDsKICAgICBpZiAo
IXN0cmluZ0luTWFwKSB7CiAgICAgICAgIHN0cmluZ0luTWFwID0ganNTdHJpbmcoZ2xvYmFsRGF0
YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CiAgICAgICAgIGFkZENvbnN0YW50VmFsdWUoc3Ry
aW5nSW5NYXApOwpAQCAtMTcxOCwxMCArMTcxOCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9k
ZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbihS
ZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uKQogewotICAgIHN0ZDo6
cGFpcjxGdW5jdGlvbk9mZnNldE1hcDo6aXRlcmF0b3IsIGJvb2w+IHB0ciA9IG1fZnVuY3Rpb25P
ZmZzZXRzLmFkZChmdW5jdGlvbiwgMCk7Ci0gICAgaWYgKHB0ci5zZWNvbmQpCi0gICAgICAgIHB0
ci5maXJzdC0+c2Vjb25kID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rp
b24obV9nbG9iYWxEYXRhLCBmdW5jdGlvbikpOwotICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25J
bnRlcm5hbChkc3QsIHB0ci5maXJzdC0+c2Vjb25kLCB0cnVlKTsKKyAgICBGdW5jdGlvbk9mZnNl
dE1hcDo6QWRkUmVzdWx0IHB0ciA9IG1fZnVuY3Rpb25PZmZzZXRzLmFkZChmdW5jdGlvbiwgMCk7
CisgICAgaWYgKHB0ci5pc05ld0tleSkKKyAgICAgICAgcHRyLml0ZXItPnNlY29uZCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rp
b24pKTsKKyAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoZHN0LCBwdHIuaXRlci0+
c2Vjb25kLCB0cnVlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgsIGJvb2wg
ZG9OdWxsQ2hlY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmI5NWNhZmI2ODI2M2E5YmY1MTBhYTRlNDIyN2Y1ZWE0
M2EzZWU5OC4uMzhjYzcwZDIzZDAzNDQ1MDM5NmFhNzAzZmJlM2JkOWMwMThiMmMwZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjU2LDkgKzI1Niw5IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEdldHRlclNldHRlclBhaXIgcGFpcihub2Rl
LCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPigwKSk7Ci0gICAgICAgICAgICBzdGQ6OnBhaXI8
R2V0dGVyU2V0dGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLmFkZChub2RlLT5u
YW1lKCkuaW1wbCgpLCBwYWlyKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5zZWNvbmQgPSBub2RlOworICAgICAg
ICAgICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLmFkZChub2RlLT5u
YW1lKCkuaW1wbCgpLCBwYWlyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQuc2Vjb25kID0gbm9kZTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVtYWluaW5nIHByb3BlcnRpZXMg
aW4gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAppbmRleCA0NDFjOWFlZDMzMWM4YjNlYjhkNzYyMzQwY2JhOTM1MzRkYzUzNGVhLi5iMGM5ZmY1
M2UyMjZkNTIzYjJhOGQyM2JiYzgwOTQ3NjZjMjIzNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgaW5saW5lIHZvaWQg
UmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCiAKICAgICAvLyBDaGVjayBpZiB0
aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgc2V0IC0gaWYgc28sCiAgICAgLy8gd2UndmUg
YWxyZWFkeSByZXRyYW5zbGF0ZWQgaXQsIG5vdGhpbmcgdG8gZG8gaGVyZS4KLSAgICBpZiAoIW1f
ZnVuY3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJsZSkuc2Vjb25kKQorICAgIGlmICghbV9m
dW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxlKS5pc05ld0tleSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9i
amVjdC0+SlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA5NjkxMDFlODdjNTM4Yzk1
ZDE3ZDE2NTFhZTJhYzVkNmQzNmIyNTlkLi5iYzgxYjI0YTExN2VkNGM0NjA4NDY0MGQ4YmY3NzUz
Zjk2MDE4MmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2Vt
Ymx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKgog
ICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29kZU1hcCgpKTsKICAgICAKLSAgICBzdGQ6
OnBhaXI8SGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
PiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9kZWNvZGVkQ29kZU1hcHMuYWRkKGNvZGVC
bG9jaywgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4oKSk7CisgICAgSGFzaE1hcDxD
b2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+OjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9kZWNvZGVkQ29kZU1hcHMuYWRkKGNvZGVCbG9jaywgVmVjdG9yPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldD4oKSk7CiAgICAgCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUocmVzdWx0LmZpcnN0LT5zZWNvbmQp
OworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1h
cCgpLT5kZWNvZGUocmVzdWx0Lml0ZXItPnNlY29uZCk7CiAgICAgCi0gICAgcmV0dXJuIHJlc3Vs
dC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vjb25kOwogfQogCiAj
aWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5Mjg1MDU2M2FlZDUxMTUzOTdjYWM4YTQyMjc1
OGIwNzRiODZhNGEzLi5jNzAxMTk3YmIwNjEyMGI0MzU3OWZiNGY5MTMzMjExMjI2MTE2Y2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApA
QCAtNTUxLDExICs1NTEsMTEgQEAgcHJpdmF0ZToKICAgICAKICAgICBOb2RlSW5kZXggY2VsbENv
bnN0YW50KEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIHBhaXI8SGFzaE1hcDxKU0NlbGwq
LCBOb2RlSW5kZXg+OjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fY2VsbENvbnN0YW50Tm9kZXMu
YWRkKGNlbGwsIE5vTm9kZSk7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZCkKLSAgICAgICAgICAg
IGl0ZXIuZmlyc3QtPnNlY29uZCA9IGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhj
ZWxsKSk7CisgICAgICAgIEhhc2hNYXA8SlNDZWxsKiwgTm9kZUluZGV4Pjo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fY2VsbENvbnN0YW50Tm9kZXMuYWRkKGNlbGwsIE5vTm9kZSk7CisgICAgICAgIGlm
IChyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gYWRk
VG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJbmZvKGNlbGwpKTsKICAgICAgICAgCi0gICAgICAg
IHJldHVybiBpdGVyLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlci0+
c2Vjb25kOwogICAgIH0KICAgICAKICAgICBDb2RlT3JpZ2luIGN1cnJlbnRDb2RlT3JpZ2luKCkK
QEAgLTI1OTUsMTAgKzI1OTUsMTAgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6
OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5dGVDb2RlUGFyc2UKIAogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygp
OyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IGNvZGVCbG9jay0+aWRlbnRp
ZmllcihpKS5pbXBsKCk7Ci0gICAgICAgICAgICBwYWlyPElkZW50aWZpZXJNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChyZXAs
IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKLSAg
ICAgICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQorICAgICAgICAgICAgSWRlbnRpZmllck1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2lkZW50aWZpZXJNYXAuYWRkKHJl
cCwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKICAgICAgICAgICAgICAgICBieXRlQ29k
ZVBhcnNlci0+bV9jb2RlQmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihieXRlQ29kZVBh
cnNlci0+bV9nbG9iYWxEYXRhLCByZXApKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFw
W2ldID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1h
cFtpXSA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKTsgKytp
KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLT5nZXRDb25zdGFudChp
ICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwpAQCAtMjYxMSwxMiArMjYxMSwxMiBAQCBC
eXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeShCeXRlQ29k
ZVBhcnNlciogYnl0ZUNvZGVQYXJzZQogICAgICAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtp
XSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2VtcHR5SlNWYWx1ZUluZGV4OwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcGFpcjxKU1ZhbHVlTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1fanNWYWx1ZU1hcC5hZGQo
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1i
ZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgICAgICAgICAgSlNWYWx1ZU1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRkKEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZD
b25zdGFudFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOworICAgICAg
ICAgICAgaWYgKHJlc3VsdC5pc05ld0tleSkgewogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFy
c2VyLT5tX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQodmFsdWUpOwogICAgICAgICAgICAgICAgIGJ5
dGVDb2RlUGFyc2VyLT5tX2NvbnN0YW50cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuZmlyc3Qt
PnNlY29uZDsKKyAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5pdGVyLT5z
ZWNvbmQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fY2FsbHNpdGVCbG9ja0hlYWRO
ZWVkc0xpbmtpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApp
bmRleCA5YWUzMmM0YjBkZTJiNjllMzMxYTU4YWRmYzQwZTQxNTFjYTJmYTkwLi5mNGNjZDg5ZTcw
YTNjOTg1ZDljYjU0YzY0ZGZkMTk0YTIxNDVlZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcApAQCAtMzU1OCwyNCArMzU1OCwyNCBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgdG9fb2JqZWN0KQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklU
VGh1bmtzOjpjdGlTdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0b3Ig
Z2VuZXJhdG9yKQogewotICAgIHN0ZDo6cGFpcjxDVElTdHViTWFwOjppdGVyYXRvciwgYm9vbD4g
ZW50cnkgPSBtX2N0aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
KCkpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQg
PSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7
CisgICAgQ1RJU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChnZW5l
cmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpKTsKKyAgICBpZiAoZW50cnkuaXNOZXdLZXkp
CisgICAgICAgIGVudHJ5Lml0ZXItPnNlY29uZCA9IGdlbmVyYXRvcihnbG9iYWxEYXRhKTsKKyAg
ICByZXR1cm4gZW50cnkuaXRlci0+c2Vjb25kOwogfQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRU
aHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiB7Ci0gICAgc3Rk
OjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2hv
c3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJs
ZT4oKSk7Ci0gICAgaWYgKCFyZXN1bHQuZmlyc3QtPnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigqZ2xvYmFsRGF0YSwgTmF0
aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVD
YWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY29uc3Ry
dWN0b3IsIE5vSW50cmluc2ljKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kLmdl
dCgpOworICAgIEhvc3RGdW5jdGlvblN0dWJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hvc3RG
dW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4o
KSk7CisgICAgaWYgKCFyZXN1bHQuaXRlci0+c2Vjb25kKQorICAgICAgICByZXN1bHQuaXRlci0+
c2Vjb25kID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4
ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChn
bG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNvbnN0cnVjdG9y
LCBOb0ludHJpbnNpYykpOworICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vjb25kLmdldCgpOwog
fQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0
b3IgZ2VuZXJhdG9yLCBJbnRyaW5zaWMgaW50cmluc2ljKQogewotICAgIHN0ZDo6cGFpcjxIb3N0
RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0
dWJNYXAtPmFkZChmdW5jdGlvbiwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7Ci0gICAg
aWYgKCEqZW50cnkuZmlyc3QtPnNlY29uZCkgeworICAgIEhvc3RGdW5jdGlvblN0dWJNYXA6OkFk
ZFJlc3VsdCBlbnRyeSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNz
V2VhazxOYXRpdmVFeGVjdXRhYmxlPigpKTsKKyAgICBpZiAoISplbnRyeS5pdGVyLT5zZWNvbmQp
IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGU7CiAgICAgICAgIGlmIChnZW5l
cmF0b3IpIHsKICAgICAgICAgICAgIGlmIChnbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTM1
ODQsOSArMzU4NCw5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1CiAgICAgICAgICAgICAgICAg
Y29kZSA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9u
KTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFi
bGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIGNv
ZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9y
LCBpbnRyaW5zaWMpKTsKKyAgICAgICAgZW50cnkuaXRlci0+c2Vjb25kID0gUGFzc1dlYWs8TmF0
aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xv
YmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IsIGludHJpbnNpYykpOwogICAgIH0KLSAgICByZXR1cm4gZW50cnkuZmlyc3Qt
PnNlY29uZC5nZXQoKTsKKyAgICByZXR1cm4gZW50cnkuaXRlci0+c2Vjb25kLmdldCgpOwogfQog
CiB2b2lkIEpJVFRodW5rczo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZjU4ODQ3ZmQyNDY3OGYyZjI1MmMzNTFiNWQ4
ZDNiZTllNTM1YWI3Mi4uMWVjNTY2OTUzYWUwN2U2YWVmNzMwMTQxMjllMzExMTVmNDI4YTliOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTMyMywxMiArMTMy
MywxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAgICBwcm9wZXJ0eSA9IHBhcnNl
UHJvcGVydHk8dHJ1ZT4oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsK
ICAgICAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKLSAgICAgICAgICAgIHN0
ZDo6cGFpcjxPYmplY3RWYWxpZGF0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcHJvcGVydHlFbnRy
eUl0ZXIgPSBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1w
bCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVy
dHlFbnRyeUl0ZXIuc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShwcm9wZXJ0
eUVudHJ5SXRlci5maXJzdC0+c2Vjb25kID09IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOworICAg
ICAgICAgICAgT2JqZWN0VmFsaWRhdGlvbk1hcDo6QWRkUmVzdWx0IHByb3BlcnR5RW50cnkgPSBv
YmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250
ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlFbnRyeS5p
c05ld0tleSkgeworICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocHJvcGVydHlFbnRyeS5pdGVy
LT5zZWNvbmQgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CiAgICAgICAgICAgICAgICAgZmFp
bElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpID09IFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQpOwotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5
KSAmIHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQpOwotICAgICAgICAgICAgICAgIHBy
b3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQgfD0gY29udGV4dC5nZXRUeXBlKHByb3BlcnR5
KTsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkg
JiBwcm9wZXJ0eUVudHJ5Lml0ZXItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlF
bnRyeS5pdGVyLT5zZWNvbmQgfD0gY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxp
c3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzUxM2QxZjExZmQ0ODk1ODI4YWY4Y2FlYmU4
MGFkYTE1YjVmNTdmOS4uYTJiMmUxMTQ4ODMwZjIwZjViMTkzMzRlMmZmMDczNjA1OGEyNTIwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjMsNyArMjIzLDcgQEAg
c3RydWN0IFNjb3BlIHsKICAgICBib29sIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmll
ciogaWRlbnQpCiAgICAgewogICAgICAgICBib29sIGlzQXJndW1lbnRzID0gbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50OwotICAgICAgICBib29sIGlzVmFs
aWRTdHJpY3RNb2RlID0gbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5p
bXBsKCkpLnNlY29uZCAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlk
ZW50ICYmICFpc0FyZ3VtZW50czsKKyAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1f
ZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5pc05ld0tleSAm
JiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3Vt
ZW50czsKICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUg
JiYgaXNWYWxpZFN0cmljdE1vZGU7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50cykKICAgICAgICAg
ICAgIHNldEZsYWdzKFNoYWRvd3NBcmd1bWVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKaW5kZXggZmJjNTc4N2NlNjU3MmE4ZDg0ZDdjMDRi
ZjgyMzE3ZjU4NDgwNmI2My4uYzI2MDM5NzlkMTc4MTM2ODk4OGFlMTBkMmVjYWQ1MWIyOTE0ZWY3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAg
LTExMCwxMSArMTEwLDExIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogYykKICAgICBpZiAoaXRlciAh
PSBsaXRlcmFsSWRlbnRpZmllclRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vj
b25kOwogCi0gICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZFJlc3VsdCA9IGlkZW50aWZpZXJUYWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0
cmluZ1RyYW5zbGF0b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CisgICAg
SGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFi
bGUuYWRkPGNvbnN0IExDaGFyKiwgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYykpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBu
ZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJv
b2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkZWRTdHJpbmcgPSBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJl
c3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBh
ZGRlZFN0cmluZyA9IGFkZFJlc3VsdC5pc05ld0tleSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRl
cikgOiAqYWRkUmVzdWx0Lml0ZXI7CiAKICAgICBsaXRlcmFsSWRlbnRpZmllclRhYmxlLmFkZChj
LCBhZGRlZFN0cmluZy5nZXQoKSk7CiAKQEAgLTEzOCwxMSArMTM4LDExIEBAIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNv
bnN0IFVDaGFyKiBzCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBs
OjplbXB0eSgpOwogICAgIENoYXJCdWZmZXI8VUNoYXI+IGJ1ZiA9IHtzLCBsZW5ndGh9OyAKLSAg
ICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0g
Z2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hhckJ1ZmZlcjxVQ2hhcj4sIElkZW50
aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3IgPihidWYpOworICAgIEhhc2hTZXQ8U3RyaW5n
SW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxl
LT5hZGQ8Q2hhckJ1ZmZlcjxVQ2hhcj4sIElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0
b3IgPihidWYpOwogICAgIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRl
ZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBw
YWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQg
PyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgcmV0
dXJuIGFkZFJlc3VsdC5pc05ld0tleSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcikgOiAqYWRk
UmVzdWx0Lml0ZXI7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KQEAgLTIxMCw3
ICsyMTAsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZFNsb3dDYXNl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU3RyaW5nSQogICAgICAgICAgICAgICAgIHJldHVy
biByOwogICAgIH0KIAotICAgIHJldHVybiAqZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5h
ZGQocikuZmlyc3Q7CisgICAgcmV0dXJuICpnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUtPmFk
ZChyKS5pdGVyOwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZFNs
b3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiOWU1YTE4NTQ0OTIzOTc4NzQ2MDI5MmEy
MmVhYjM1MmJmN2I4ZTIyLi5hNDk2NGI5ZjFmZTNhZjA0MjYzZjA2NTFjM2Q3ODIxNzExM2MwYTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0xNzgs
MTEgKzE3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICAgICAgQ2hhckJ1ZmZlcjxU
PiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46
Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUt
PmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I8VD4gPihi
dWYpOworICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VD4sIElkZW50aWZp
ZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CiAgICAgICAgIAogICAgICAgICAvLyBJ
ZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBp
dC4KICAgICAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBp
cyBzby4KLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9wdFJlZigqYWRkUmVz
dWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQu
aXNOZXdLZXkgPyBhZG9wdFJlZigqYWRkUmVzdWx0Lml0ZXIpIDogKmFkZFJlc3VsdC5pdGVyOwog
ICAgIH0KIAogICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwg
Y29uc3QgSWRlbnRpZmllciYgYikKQEAgLTI0NiwxMCArMjQ2LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFN0cmluZ0ltcGw+ID4sIElkZW50aWZpZXJNYXBJ
bmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWPgotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0
b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRkKFUgdmFsdWUpCisgICAgSGFzaFNldDxTdHJp
bmdJbXBsKj46OkFkZFJlc3VsdCBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZhbHVlKQogICAgIHsK
LSAgICAgICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gbV90YWJsZS5hZGQ8VSwgVj4odmFsdWUpOwotICAgICAgICAoKnJlc3VsdC5maXJz
dCktPnNldElzSWRlbnRpZmllcih0cnVlKTsKKyAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46
OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZDxVLCBWPih2YWx1ZSk7CisgICAgICAgICgq
cmVzdWx0Lml0ZXIpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmlu
ZGV4IDJjNjIwYjRhZTU4OWQxZWM5ZTZmNDc2OTJlNDQ2Y2ZhODU2M2Q0MDEuLmZhZjYwZmJmZDE4
NTVmZjQ1MzMyOTFhZWVjZjM1ZGRlZjY0ZGM2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xOTUsMTAgKzE5NSwxMCBAQCB2b2lkIEpTQXJyYXk6OmZp
bmFsaXplKEpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5kZWFsbG9jYXRlU3BhcnNlTWFw
KCk7CiB9CiAKLWlubGluZSBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3Is
IGJvb2w+IFNwYXJzZUFycmF5VmFsdWVNYXA6OmFkZChKU0FycmF5KiBhcnJheSwgdW5zaWduZWQg
aSkKK2lubGluZSBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRSZXN1bHQgU3BhcnNlQXJyYXlWYWx1
ZU1hcDo6YWRkKEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpKQogewogICAgIFNwYXJzZUFycmF5
RW50cnkgZW50cnk7Ci0gICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21h
cC5hZGQoaSwgZW50cnkpOworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoaSwgZW50
cnkpOwogICAgIHNpemVfdCBjYXBhY2l0eSA9IG1fbWFwLmNhcGFjaXR5KCk7CiAgICAgaWYgKGNh
cGFjaXR5ICE9IG1fcmVwb3J0ZWRDYXBhY2l0eSkgewogICAgICAgICBIZWFwOjpoZWFwKGFycmF5
KS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KChjYXBhY2l0eSAtIG1fcmVwb3J0ZWRDYXBhY2l0eSkg
KiAoc2l6ZW9mKHVuc2lnbmVkKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSk7CkBA
IC0yMDksMTQgKzIwOSwxNCBAQCBpbmxpbmUgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6
Oml0ZXJhdG9yLCBib29sPiBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSgogCiBpbmxpbmUgdm9p
ZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJh
eSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBz
dGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGFk
ZChhcnJheSwgaSk7Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmlyc3Qt
PnNlY29uZDsKKyAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFy
c2VBcnJheUVudHJ5JiBlbnRyeSA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAKICAgICAvLyBUbyBz
YXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3Bh
cnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcg
cHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBp
cyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAg
ICBpZiAocmVzdWx0LnNlY29uZCAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAg
IHJlbW92ZShyZXN1bHQuZmlyc3QpOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkgJiYgIWFycmF5
LT5pc0V4dGVuc2libGUoKSkgeworICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXIpOwogICAgICAg
ICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0y
NTIsMTQgKzI1MiwxNCBAQCBpbmxpbmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhl
Y1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaQogCiBpbmxpbmUgYm9vbCBT
cGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBh
cnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAg
ICBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IGFkZChhcnJheSwgaSk7Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmly
c3QtPnNlY29uZDsKKyAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBT
cGFyc2VBcnJheUVudHJ5JiBlbnRyeSA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAKICAgICAvLyBU
byBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUg
c3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBu
ZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhp
cyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4K
LSAgICBpZiAocmVzdWx0LnNlY29uZCAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAg
ICAgIHJlbW92ZShyZXN1bHQuZmlyc3QpOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkgJiYgIWFy
cmF5LT5pc0V4dGVuc2libGUoKSkgeworICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXIpOwogICAg
ICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBkZWZp
bmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIik7CiAgICAgfQog
CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBKU0FycmF5OjplbnRlckRpY3Rpb25hcnlNb2RlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgLy8gVGhpcyB3aWxsIGFsd2F5cyBiZSBh
IG5ldyBlbnRyeSBpbiB0aGUgbWFwLCBzbyBubyBuZWVkIHRvIGNoZWNrIHdlIGNhbiB3cml0ZSwK
ICAgICAgICAgLy8gYW5kIGF0dHJpYnV0ZXMgYXJlIGRlZmF1bHQgc28gbm8gbmVlZCB0byBzZXQg
dGhlbS4KICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgbWFwLT5hZGQodGhpcywgaSku
Zmlyc3QtPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAg
bWFwLT5hZGQodGhpcywgaSkuaXRlci0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1
ZSk7CiAgICAgfQogCiAgICAgdm9pZCogbmV3UmF3U3RvcmFnZSA9IDA7CkBAIC00MzAsMTUgKzQz
MCwxNSBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eQogICAgIEFTU0VSVChtYXApOwogCiAgICAg
Ly8gMS4gTGV0IGN1cnJlbnQgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blBy
b3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBwcm9wZXJ0eSBuYW1lIFAuCi0gICAg
c3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
YXAtPmFkZCh0aGlzLCBpbmRleCk7Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCA9
ICZyZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gbWFwLT5hZGQodGhpcywgaW5kZXgpOworICAgIFNwYXJzZUFycmF5RW50cnkq
IGVudHJ5SW5NYXAgPSAmcmVzdWx0Lml0ZXItPnNlY29uZDsKIAogICAgIC8vIDIuIExldCBleHRl
bnNpYmxlIGJlIHRoZSB2YWx1ZSBvZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVy
dHkgb2YgTy4KICAgICAvLyAzLiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJs
ZSBpcyBmYWxzZSwgdGhlbiBSZWplY3QuCiAgICAgLy8gNC4gSWYgY3VycmVudCBpcyB1bmRlZmlu
ZWQgYW5kIGV4dGVuc2libGUgaXMgdHJ1ZSwgdGhlbgotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7
CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkgewogICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSgp
KSB7Ci0gICAgICAgICAgICBtYXAtPnJlbW92ZShyZXN1bHQuZmlyc3QpOworICAgICAgICAgICAg
bWFwLT5yZW1vdmUocmVzdWx0Lml0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVj
LCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVj
dCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBhZDk4ZDY2MTkwYjAzY2E1NWM4NGEwMjhjNDg5
MzAyYjUxYjE4YjliLi44OTBmZGY0ZjBhMDk0NGU1ODRiNjZmMWY2NGUzNTgxM2M5NzI0MzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC01NSw2ICs1NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBNYXA6Oml0ZXJh
dG9yIGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIE1hcDo6Y29uc3RfaXRlcmF0b3IgY29uc3Rf
aXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgTWFwOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAg
ICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAoKQogICAgICAgICAgICAgOiBtX2ZsYWdzKE5vcm1h
bCkKQEAgLTg3LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZXNlIG1l
dGhvZHMgbWF5IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAogICAgICAgICB2b2lkIHB1
dChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhy
b3cpOwogICAgICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWdu
ZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0
b3IsIGJvb2w+IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOworICAgICAgICBBZGRSZXN1bHQgYWRk
KEpTQXJyYXkqLCB1bnNpZ25lZCk7CiAgICAgICAgIGl0ZXJhdG9yIGZpbmQodW5zaWduZWQgaSkg
eyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQogICAgICAgICAvLyBUaGlzIHNob3VsZCBBU1NFUlQg
dGhlIHJlbW92ZSBpcyB2YWxpZCAoY2hlY2sgdGhlIHJlc3VsdCBvZiB0aGUgZmluZCkuCiAgICAg
ICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yIGl0KSB7IG1fbWFwLnJlbW92ZShpdCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApp
bmRleCA4ZWZiNDA2NWUxNzM5Y2YwNWQ1ZDkxNjZjNzViZWNkODBkZGUzMGZjLi4xYjZhOTI3OWNh
NDFlZjZmMjU4YmQzODhkMWNhYzk0N2NmYmQzMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICAg
ICAgbV9zZXQuYWRkKG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV0uaW1wbCgpKTsKICAg
ICAgICAgfQotICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5zZWNvbmQpCisgICAg
ICAgIGlmICghbV9zZXQuYWRkKGlkZW50aWZpZXIpLmlzTmV3S2V5KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCmluZGV4IGUzNDA4YjA4YmIyNmFjOTQ4Zjc3Yzc1ZjJh
MzgxNDE3MDg2N2Q0NDEuLmJiZmEwNDY3MmMzYTIzMjk0YTk3YmI3M2VhMjBkZmE2NzRiZjFkNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lv
bkNoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1
cnNpb25DaGVja2VyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIEpTVmFsdWUgU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlcjo6cGVyZm9ybUNoZWNrKCkKICAgICBpbnQgc2l6ZSA9IG1fZXhlYy0+Z2xv
YmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHMuc2l6ZSgpOwogICAg
IGlmIChzaXplID49IE1heFNtYWxsVGhyZWFkUmVlbnRyeURlcHRoICYmIHNpemUgPj0gbV9leGVj
LT5nbG9iYWxEYXRhKCkubWF4UmVlbnRyeURlcHRoKQogICAgICAgICByZXR1cm4gdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoKTsKLSAgICBib29sIGFscmVhZHlWaXNpdGVkID0gIW1fZXhlYy0+Z2xv
YmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHMuYWRkKG1fdGhpc09i
amVjdCkuc2Vjb25kOworICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhbV9leGVjLT5nbG9iYWxE
YXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5hZGQobV90aGlzT2JqZWN0
KS5pc05ld0tleTsKICAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOyAvLyBSZXR1cm4gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vy
c2lvbi4KICAgICByZXR1cm4gSlNWYWx1ZSgpOyAvLyBJbmRpY2F0ZSBzdWNjZXNzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNmVlNDE5ZGE2YTc4
ZjgxMjY2YmVlMmQ2YTRhZjVjNTZkOWVkOTc1My4uNzdhZmRhZTZlZDU3NzVhNmM2NjMyMDU2ZjE1
ZDJjYjNlNmNhZjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogcwogICAg
IC8vIE5ld2VyIHZlcnNpb25zIG9mIHRoZSBTVEwgaGF2ZSBhbiBzdGQ6Om1ha2VfcGFpciBmdW5j
dGlvbiB0aGF0IHRha2VzIHJ2YWx1ZSByZWZlcmVuY2VzLgogICAgIC8vIFdoZW4gZWl0aGVyIG9m
IHRoZSBwYXJhbWV0ZXJzIGFyZSBiaXRmaWVsZHMsIHRoZSBDKysgY29tcGlsZXIgd2lsbCB0cnkg
dG8gYmluZCB0aGVtIGFzIGx2YWx1ZXMsIHdoaWNoIGlzIGludmFsaWQuIFRvIHdvcmsgYXJvdW5k
IHRoaXMsIHVzZSB1bmFyeSAiKyIgdG8gbWFrZSB0aGUgcGFyYW1ldGVyIGFuIHJ2YWx1ZS4KICAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MjYxIGZv
ciBtb3JlIGRldGFpbHMKLSAgICBzdGQ6OnBhaXI8VHJhbnNpdGlvbk1hcDo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1hcCgpLT5hZGQoZ2xvYmFsRGF0YSwgbWFrZV9wYWlyKHN0cnVjdHVyZS0+
bV9uYW1lSW5QcmV2aW91cywgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIHN0
cnVjdHVyZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgVHJhbnNpdGlvbk1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1hcCgpLT5hZGQoZ2xvYmFsRGF0YSwgbWFrZV9wYWlyKHN0cnVj
dHVyZS0+bV9uYW1lSW5QcmV2aW91cywgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91
cyksIHN0cnVjdHVyZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgLy8g
VGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSEgLSB3ZSBzaG91bGQgb25seSBoaXQgdGhpcyB3aGVu
IGRlc3BlY2lmeWluZy4KLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC5nZXQoKS5zZWNvbmQt
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXIu
Z2V0KCkuc2Vjb25kLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKICAgICAgICAgQVNTRVJU
KCFzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwotICAgICAgICBtYXAoKS0+
c2V0KHJlc3VsdC5maXJzdCwgc3RydWN0dXJlKTsKKyAgICAgICAgbWFwKCktPnNldChyZXN1bHQu
aXRlciwgc3RydWN0dXJlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha0dDTWFwLmgKaW5kZXggMWJiM2NkNWJiM2Q5YmU5Njc4MzEyOWU4ZTVhZTIxMzBkMmU4
YmY3OC4uN2QxNzM5YjUxZmVjNTUyMzFjOTRmN2VhNjdjZjFlY2IxYjJkMWI4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTU0LDkgKzU0LDcgQEAgY2xh
c3MgV2Vha0dDTWFwIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgewogICAgIHR5cGVkZWYgSGFz
aE1hcDxLZXlUeXBlLCBIYW5kbGVTbG90LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+IE1hcFR5cGU7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYW5kbGVUeXBlczxNYXBwZWRUeXBlPjo6RXh0ZXJuYWxU
eXBlIEV4dGVybmFsVHlwZTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9y
IG1hcF9pdGVyYXRvcjsKLQogcHVibGljOgotCiAgICAgc3RydWN0IGl0ZXJhdG9yIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFdlYWtHQ01hcDsKICAgICAgICAgaXRlcmF0b3IobWFwX2l0ZXJhdG9y
IGl0ZXIpCkBAIC03OSw2ICs3NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1hcF9pdGVyYXRvciBt
X2l0ZXJhdG9yOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgQWRkUmVzdWx0IHsKKyAgICAgICAgQWRk
UmVzdWx0KHR5cGVuYW1lIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQpIDogaXRlcihyZXN1bHQu
aXRlciksIGlzTmV3S2V5KHJlc3VsdC5pc05ld0tleSkgeyB9CisgICAgICAgIGl0ZXJhdG9yIGl0
ZXI7CisgICAgICAgIGJvb2wgaXNOZXdLZXk7CisgICAgfTsKKwogICAgIFdlYWtHQ01hcCgpCiAg
ICAgewogICAgIH0KQEAgLTEyMSwxNyArMTI1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fbWFwLmdldChrZXkpOwogICAgIH0KIAotICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBl
IHZhbHVlKQorICAgIEFkZFJlc3VsdCBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8
dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQoa2V5LCAw
KTsKLSAgICAgICAgaWYgKGl0ZXIuc2Vjb25kKSB7CisgICAgICAgIHR5cGVuYW1lIE1hcFR5cGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5pc05ld0tleSkgewogICAgICAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5o
ZWFwLmhhbmRsZUhlYXAoKS0+YWxsb2NhdGUoKTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNl
Y29uZCA9IHNsb3Q7CisgICAgICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gc2xvdDsKICAg
ICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNsb3QsIHRoaXMs
IEZpbmFsaXplckNhbGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkpOwogICAgICAgICAg
ICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3QsIHZhbHVlKTsK
ICAgICAgICAgICAgICpzbG90ID0gdmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGl0
ZXI7CisgICAgICAgIHJldHVybiBBZGRSZXN1bHQocmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBzZXQoaXRlcmF0b3IgaXRlciwgRXh0ZXJuYWxUeXBlIHZhbHVlKQpAQCAtMTQ0LDEyICsx
NDgsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQo
a2V5LCAwKTsKLSAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gaXRlci5maXJzdC0+c2Vjb25kOwot
ICAgICAgICBpZiAoaXRlci5zZWNvbmQpIHsKKyAgICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIDApOworICAgICAgICBIYW5kbGVTbG90IHNs
b3QgPSByZXN1bHQuaXRlci0+c2Vjb25kOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7
CiAgICAgICAgICAgICBzbG90ID0gZ2xvYmFsRGF0YS5oZWFwLmhhbmRsZUhlYXAoKS0+YWxsb2Nh
dGUoKTsKICAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNs
b3QsIHRoaXMsIGtleSk7Ci0gICAgICAgICAgICBpdGVyLmZpcnN0LT5zZWNvbmQgPSBzbG90Owor
ICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IHNsb3Q7CiAgICAgICAgIH0KICAgICAg
ICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3QsIHZhbHVlKTsK
ICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Q
cm9maWxlVHJlZU5vZGUuaAppbmRleCA2MGQ1OTkyOGE0NjdhNjE3ZTJmM2E3ODFlYmUyMDA1MTVl
MzZkOTAwLi4zNGU0NTgyOGE5OTI3NGE3Mjc0OTY4ZTExYTg4NzBkNWFiZjYwZmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCkBAIC01MCw4ICs1
MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2hpbGRyZW4gPSBuZXcgTWFwKCk7CiAgICAg
CiAgICAgICAgIFByb2ZpbGVUcmVlTm9kZSBuZXdFbnRyeTsKLSAgICAgICAgcGFpcjxNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQoU3RyaW5nKG5hbWUpLCBuZXdF
bnRyeSk7Ci0gICAgICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJbk1hcCA9ICZyZXN1bHQuZmly
c3QtPnNlY29uZDsKKyAgICAgICAgTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jaGlsZHJlbi0+
YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOworICAgICAgICBQcm9maWxlVHJlZU5vZGUqIGNo
aWxkSW5NYXAgPSAmcmVzdWx0Lml0ZXItPnNlY29uZDsKICAgICAgICAgKytjaGlsZEluTWFwLT5t
X2NvdW50OwogICAgICAgICByZXR1cm4gY2hpbGRJbk1hcDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaENvdW50
ZWRTZXQuaAppbmRleCBjYWZiMjY0OWViNjI0NzFhY2M5NmY0Y2YzNzg5ZWMwNDlkNzQwMGVlLi4z
YTUxM2M1NWM1ZGY2YjI2MWE0NmI5ZjkwMjQwYTgxNWMxMmE2YTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3Vu
dGVkU2V0LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVk
ZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpp
dGVyYXRvciBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1w
bFR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBIYXNoQ291bnRl
ZFNldCgpIHt9CiAgICAgICAgIApAQCAtNTcsNyArNTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgLy8gSW5jcmVhc2VzIHRoZSBjb3VudCBpZiBhbiBlcXVhbCB2YWx1ZSBpcyBhbHJlYWR5
IHByZXNlbnQKICAgICAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50
ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyAKICAgICAgICAgLy8gbG9jYXRpb24sIGFuZCBhIGJv
b2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQuCi0gICAgICAgIHN0ZDo6
cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRS
ZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgICAKICAgICAgICAgLy8gUmVkdWNl
cyB0aGUgY291bnQgb2YgdGhlIHZhbHVlLCBhbmQgcmVtb3ZlcyBpdCBpZiBjb3VudAogICAgICAg
ICAvLyBnb2VzIGRvd24gdG8gemVybywgcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyByZW1v
dmVkLgpAQCAtMTQyLDEwICsxNDMsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIHN0ZDo6cGFpcjx0eXBlbmFtZSBIYXNoQ291bnRlZFNl
dDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hDb3Vu
dGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjphZGQoY29uc3QgVmFsdWVUeXBl
ICZ2YWx1ZSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCiAgICAgewotICAg
ICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsg
Ci0gICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIEFkZFJlc3VsdCByZXN1
bHQgPSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsKKyAgICAgICAgKytyZXN1bHQuaXRlci0+c2Vjb25k
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCBiZTdl
OWViZWQxMzc5M2JhNzhlMGNhZmQ3MzkwNWIxZTA0YzMwNTc4Li42NDRkOGVlNTU5OWNjNjEzNWUz
ODVlNzFiYTQ0YmE4ZmVmNmE4Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKICAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5
cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5
cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgc3dh
cChIYXNoTWFwJik7CkBAIC05NCwxMiArOTUsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IC8vIHJlcGxhY2VzIHZhbHVlIGJ1dCBub3Qga2V5IGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQK
ICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhl
IGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYg
YSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJv
b2w+IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRS
ZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICAv
LyBkb2VzIG5vdGhpbmcgaWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1
cm4gdmFsdWUgaXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAK
ICAgICAgICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMg
YWN0dWFsbHkgYWRkZWQKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtl
eVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3Qg
S2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IEtleVR5cGUmKTsKICAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IpOwpAQCAtMTIyLDEyICsx
MjMsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgVCYpOwogICAgICAgICAvLyAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZhbHVl
VHlwZSYsIGNvbnN0IFQmKTsKICAgICAgICAgLy8gICBzdGF0aWMgdHJhbnNsYXRlKFZhbHVlVHlw
ZSYsIGNvbnN0IFQmLCB1bnNpZ25lZCBoYXNoQ29kZSk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQo
Y29uc3QgVCYsIE1hcHBlZFBhc3NJblR5cGUpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gQWRkUmVzdWx0IGFkZChjb25zdCBUJiwgTWFwcGVk
UGFzc0luVHlwZSk7CiAKICAgICAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoY29u
c3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOworICAgICAgICBBZGRSZXN1
bHQgaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsK
IAogICAgICAgICBjbGFzcyBIYXNoTWFwS2V5c1Byb3h5IDogcHJpdmF0ZSBIYXNoTWFwIHsKICAg
ICAgICAgcHVibGljOgpAQCAtMzE5LDM0ICszMjAsMzQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUs
IFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpbmVB
ZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkg
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxIYXNoTWFwVHJhbnNs
YXRvcjxWYWx1ZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gPihrZXksIG1hcHBlZCk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBl
JiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBoYXNoIHRh
YmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgotICAgICAgICAgICAg
TWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICAg
ICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRlci0+c2Vjb25kKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVFlQRSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+
Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9v
bD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgVFlQRSYga2V5LCBNYXBwZWRQYXNzSW5U
eXBlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNz
aW5nSGFzaENvZGU8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHJhaXRzLCBIYXNoVHJh
bnNsYXRvcj4gPihrZXksIHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBh
aXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAg
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBt
YXBwZWQpCiAgICAgewogICAgICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hT
ZXQuaAppbmRleCAzM2NiMTRkYWFiNjgyNjg3ZjBhZThlNmMyYzhmMWIyYmFlZjhhYjk2Li4xYjNi
MmUyODczMzQzOWIxMGJiNzUzYzkwNGQ1NGZmZWM1NWYyNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC01MSw2
ICs1MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBI
YXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGl0
ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhh
c2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAgICAgICB2
b2lkIHN3YXAoSGFzaFNldCYpOwogCkBAIC03Niw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewog
CiAgICAgICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIGFuIGludGVyYXRvciB0
byB0aGUgbmV3IHZhbHVlJ3MgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sIHRoYXQg
aXMgdHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2FzIGFkZGVkLgotICAgICAgICBwYWlyPGl0ZXJhdG9y
LCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29u
c3QgVmFsdWVUeXBlJik7CiAKICAgICAgICAgLy8gQW4gYWx0ZXJuYXRlIHZlcnNpb24gb2YgYWRk
KCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAg
ICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252
ZXJzaW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQpAQCAtODYsNyArODcsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgLy8gICBzdGF0aWMgdHJhbnNsYXRlKFZhbHVlVHlwZSYsIGNvbnN0
IFQmLCB1bnNpZ25lZCBoYXNoQ29kZSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmV2
ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBzbyB0aGF0IGNhbGxlcnMK
ICAgICAgICAgLy8gY2FuIGp1c3QgcGFzcyB0aGUgdHJhbnNsYXRvciBhbmQgbGV0IHRoZSBjb21w
aWxlciBkZWR1Y2UgVC4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJik7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBBZGRSZXN1bHQg
YWRkKGNvbnN0IFQmKTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsK
ICAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IpOwpAQCAtMTc3LDE0ICsxNzgsMTQgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+
OjppdGVyYXRvciwgYm9vbD4gSGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46OkFkZFJlc3VsdCBI
YXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2ltcGwuYWRkKHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotICAgIGlubGlu
ZSBwYWlyPHR5cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0
ZXJhdG9yLCBib29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQKICAgICBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+OjphZGQoY29uc3QgVCYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoU2V0VHJhbnNsYXRvckFkYXB0
ZXI8SGFzaFRyYW5zbGF0b3I+ID4odmFsdWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggMDU3
MjJkOWM1NTZhNzk3YjQxODgwNzIwZDdjZTMwMDU3ZmI1ZjZiNi4uODliM2Y5ZDhkYzk2ZDg2MzJl
YmM4N2Y4NzhlYTZhNDk0MjIxYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTMzMCwxMyArMzMwLDE5
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3RhYmxlU2l6ZTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9rZXlDb3VudDsgfQogCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBW
YWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0
cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CisgICAgICAgIHN0cnVjdCBBZGRSZXN1
bHQgeworICAgICAgICAgICAgQWRkUmVzdWx0KGl0ZXJhdG9yIGl0ZXIsIGJvb2wgaXNOZXdLZXkp
IDogaXRlcihpdGVyKSwgaXNOZXdLZXkoaXNOZXdLZXkpIHsgfQorICAgICAgICAgICAgaXRlcmF0
b3IgaXRlcjsKKyAgICAgICAgICAgIGJvb2wgaXNOZXdLZXk7CisgICAgICAgIH07CisKKyAgICAg
ICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRl
bnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9
CiAKICAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkgdGhhdCBmaW5kcyB0aGUg
b2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAgICAvLyB3aXRoIHNvbWUgb3Ro
ZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJzaW9uIGlmIHRoZSBvYmpl
Y3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUuCi0gICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gcGFp
cjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmKTsKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEV4dHJhPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYg
a2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYg
a2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGRQYXNzaW5nSGFz
aENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOwogCiAgICAgICAgIGl0ZXJhdG9yIGZp
bmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJldHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5
cGU+KGtleSk7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBr
ZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQpA
QCAtNjY1LDcgKzY3MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+
Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCisgICAgaW5saW5l
IHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkKGNvbnN0IFQmIGtl
eSwgY29uc3QgRXh0cmEmIGV4dHJhKQogICAgIHsKICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5z
bGF0b3I+KGtleSk7CiAKQEAgLTcwMCw3ICs3MDYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
aWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdv
b2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFk
ZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQogICAg
ICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKQEAgLTcxMSw3ICs3MTcsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCpl
bnRyeSkpCiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5OwogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJh
Y3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxz
ZSk7CiAgICAgICAgICAgICB9CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKICAgICAgICAgICAg
ICsrcHJvYmVDb3VudDsKQEAgLTczOCwxOSArNzQ0LDE5IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICAgICAgLy8gZm9sbG93IGEgcGl2b3QgZW50cnkgYW5kIHJldHVybiB0aGUgbmV3IHBvc2l0
aW9uLgogICAgICAgICAgICAgS2V5VHlwZSBlbnRlcmVkS2V5ID0gRXh0cmFjdG9yOjpleHRyYWN0
KCplbnRyeSk7CiAgICAgICAgICAgICBleHBhbmQoKTsKLSAgICAgICAgICAgIHBhaXI8aXRlcmF0
b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsKLSAg
ICAgICAgICAgIEFTU0VSVChwLmZpcnN0ICE9IGVuZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBw
OworICAgICAgICAgICAgQWRkUmVzdWx0IHJlc3VsdChmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsK
KyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlciAhPSBlbmQoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpbnRlcm5hbENoZWNr
VGFibGVDb25zaXN0ZW5jeSgpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOworICAgICAgICByZXR1cm4g
QWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
aXRlcmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtl
eSwgY29uc3QgRXh0cmEmIGV4dHJhKQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OkFk
ZFJlc3VsdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0
IEV4dHJhJiBleHRyYSkKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihr
ZXkpOwogCkBAIC03NjgsNyArNzc0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHVuc2ln
bmVkIGggPSBsb29rdXBSZXN1bHQuc2Vjb25kOwogICAgICAgICAKICAgICAgICAgaWYgKGZvdW5k
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRv
cihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzRGVs
ZXRlZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCplbnRy
eSk7CkBAIC03ODMsMTQgKzc4OSwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIC8v
IGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBwb3NpdGlvbi4KICAgICAg
ICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpOwog
ICAgICAgICAgICAgZXhwYW5kKCk7Ci0gICAgICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBw
ID0gc3RkOjptYWtlX3BhaXIoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBB
U1NFUlQocC5maXJzdCAhPSBlbmQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAg
ICAgIEFkZFJlc3VsdCByZXN1bHQoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7CisgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0Lml0ZXIgIT0gZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihl
bnRyeSksIHRydWUpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVy
YXRvcihlbnRyeSksIHRydWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaApp
bmRleCA3OTk0NjZmYTk4YzZkZjdlMjViMjA2N2MyYTIwMGY0Nzk0NzNhYzEyLi5hMmJjMTJjZjU0
NzlhNDhkOTQxYjgxZjYwYzY2MGJlODliYjllY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9MaXN0SGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKQEAgLTgx
LDYgKzgxLDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
Q29uc3RSZXZlcnNlSXRlcmF0b3I8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0
Q29uc3RSZXZlcnNlSXRlcmF0b3I8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz47
CiAKKyAgICAgICAgc3RydWN0IEFkZFJlc3VsdCB7CisgICAgICAgICAgICBBZGRSZXN1bHQoaXRl
cmF0b3IgaXRlciwgYm9vbCBpc05ld0tleSkgOiBpdGVyKGl0ZXIpLCBpc05ld0tleShpc05ld0tl
eSkgeyB9CisgICAgICAgICAgICBpdGVyYXRvciBpdGVyOworICAgICAgICAgICAgYm9vbCBpc05l
d0tleTsKKyAgICAgICAgfTsKKwogICAgICAgICBMaXN0SGFzaFNldCgpOwogICAgICAgICBMaXN0
SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYpOwogICAgICAgICBMaXN0SGFzaFNldCYgb3BlcmF0
b3I9KGNvbnN0IExpc3RIYXNoU2V0Jik7CkBAIC0xMjQsMTAgKzEzMCwxMCBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG9mIGFkZCBpcyBhIHBhaXIgb2Yg
YW4gaXRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5k
IGEgYm9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRS
ZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJv
b2w+IGluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1
ZVR5cGUmIG5ld1ZhbHVlKTsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0QmVm
b3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGlu
c2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUm
IG5ld1ZhbHVlKTsKKyAgICAgICAgQWRkUmVzdWx0IGluc2VydEJlZm9yZShpdGVyYXRvciwgY29u
c3QgVmFsdWVUeXBlJik7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7
CiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTY5NSwyNiArNzAxLDI1IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVuYW1lIExpc3RIYXNoU2V0
PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgdHlwZW5h
bWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRSZXN1bHQgTGlzdEhhc2hT
ZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIHBhaXI8dHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0
b3IuZ2V0KCkpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgIGFwcGVu
ZE5vZGUoKnJlc3VsdC5maXJzdCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtl
SXRlcmF0b3IoKnJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOworICAgICAgICB0eXBlbmFt
ZSBJbXBsVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRy
YW5zbGF0b3I+KHZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7CisgICAgICAgIGlmIChyZXN1bHQu
aXNOZXdLZXkpCisgICAgICAgICAgICBhcHBlbmROb2RlKCpyZXN1bHQuaXRlcik7CisgICAgICAg
IHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlciksIHJlc3VsdC5pc05l
d0tleSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBVPgotICAgIHBhaXI8dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5s
aW5lQ2FwYWNpdHksIFU+OjppdGVyYXRvciwgYm9vbD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2Fw
YWNpdHksIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3
VmFsdWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpB
ZGRSZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUo
aXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCiAgICAgewotICAgICAgICBw
YWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLnRl
bXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG1fYWxsb2NhdG9yLmdldCgpKTsK
LSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICBpbnNlcnROb2RlQmVmb3Jl
KGl0Lm5vZGUoKSwgKnJlc3VsdC5maXJzdCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihtYWtlSXRlcmF0b3IoKnJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwotCisgICAgICAg
IHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFk
ZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAg
aWYgKHJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoaXQubm9k
ZSgpLCAqcmVzdWx0Lml0ZXIpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRv
cigqcmVzdWx0Lml0ZXIpLCByZXN1bHQuaXNOZXdLZXkpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWly
PHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJv
b2w+IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0
IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCisgICAg
dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRSZXN1bHQgTGlz
dEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVU
eXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBpbnNlcnRCZWZvcmUoZmluZChiZWZvcmVWYWx1ZSksIG5ld1ZhbHVlKTsgCiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oIGIvU291cmNl
L1dURi93dGYvUmVmUHRySGFzaE1hcC5oCmluZGV4IGY0OGE1OWNmNjM3MDIyNjQwNDI1MjAzYzhl
NDJkMTZiZWQ4YjUxNzMuLjgxOTQ5MjkwNTUwNTk1ZWI1NzIyODlkOGNjNWY0OTkyZDY1YmVjMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxI
YXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hU
YWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3Rf
aXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVz
dWx0IEFkZFJlc3VsdDsKIAogICAgICAgICB2b2lkIHN3YXAoSGFzaE1hcCYpOwogCkBAIC04Niwx
NCArODcsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIHJlcGxhY2VzIHZhbHVlIGJ1
dCBub3Qga2V5IGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZh
bHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAg
ICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVh
bGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChjb25zdCBLZXlUeXBl
JiwgTWFwcGVkUGFzc0luVHlwZSk7IAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQo
UmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgc2V0KGNv
bnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IHNldChS
YXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICAvLyBkb2VzIG5vdGhpbmcg
aWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBw
YWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5k
IGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQ
YXNzSW5UeXBlKTsgCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChSYXdLZXlUeXBl
LCBNYXBwZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlw
ZSYsIE1hcHBlZFBhc3NJblR5cGUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKFJhd0tleVR5cGUs
IE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUm
KTsKICAgICAgICAgdm9pZCByZW1vdmUoUmF3S2V5VHlwZSk7CkBAIC0xMDQsOCArMTA1LDggQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIE1hcHBlZFBhc3NPdXRUeXBlIHRha2UoUmF3S2V5VHlw
ZSk7IC8vIGVmZmljaWVudCBjb21iaW5hdGlvbiBvZiBnZXQgd2l0aCByZW1vdmUKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChjb25zdCBLZXlU
eXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IGlubGluZUFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsK
KyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0lu
UmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoUmF3S2V5VHlwZSwg
TWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CiAKICAgICAgICAgSGFzaFRhYmxlVHlwZSBtX2lt
cGw7CiAgICAgfTsKQEAgLTE5NSw1MiArMTk2LDUyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQ
dHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICBpbmxpbmUgdHlwZW5hbWUg
SGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJl
ZlB0cjxUPiwgVSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBl
ZFBhc3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2lt
cGwudGVtcGxhdGUgYWRkPFRyYW5zbGF0b3I+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBV
LCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8
UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4s
IFUsIFYsIFcsIFg+OjppbmxpbmVBZGQoUmF3S2V5VHlwZSBrZXksIE1hcHBlZFBhc3NJblJlZmVy
ZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
YWRkPFRyYW5zbGF0b3I+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgot
ICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRv
ciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFk
ZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2V0KGNvbnN0IEtl
eVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpIAogICAgIHsKLSAgICAgICAgcGFp
cjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKLSAgICAg
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFkZFJlc3VsdCByZXN1bHQgPSBpbmxp
bmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkgewogICAg
ICAgICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhh
c2ggdGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAg
ICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwor
ICAgICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyLT5zZWNv
bmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYs
IFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnNl
dChSYXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpIAogICAgIHsKLSAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsK
LSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFkZFJlc3VsdCByZXN1bHQg
PSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkg
ewogICAgICAgICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0
aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0g
ICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNv
bmQpOworICAgICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVy
LT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBW
LCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4s
IFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywg
WD46OmFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBX
LCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUs
IFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46
OmFkZChSYXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpCiAgICAgewogICAg
ICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1NwZWN0cnVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCmluZGV4IDU5YmM0
YTI5YTlkOGQ3NzUxYjJkZDFkMDMxYjg1MjNjNjViNjM0N2QuLjlhMjJkY2JjYzdmMGE0Y2Y2NDM0
YTFlZmEyNDE3Nzk4YjQ2YWI1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaApAQCAtNDIsOSArNDIsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50
ID0gMSkKICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9tYXAuYWRkKGtleSwgY291bnQpOwotICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSBjb3VudDsKKyAgICAgICAgdHlwZW5hbWUg
SGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIGNvdW50KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICBy
ZXN1bHQuaXRlci0+c2Vjb25kICs9IGNvdW50OwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBs
b25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCmluZGV4
IGVjNWRlNzIyMDBmNTc1ZDc3NGNjMjBkOTFhOTM4ZTlkOWQ5ZjAyNjkuLmQwZmE3MTk1MGExN2E3
NmFjNzQwZWRlMjk3YjVjZmE2NTMwZTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dU
RlRocmVhZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCkBA
IC02MywxMCArNjMsMTAgQEAgSWRlbnRpZmllclRhYmxlOjp+SWRlbnRpZmllclRhYmxlKCkKICAg
ICAgICAgKCppdGVyKS0+c2V0SXNJZGVudGlmaWVyKGZhbHNlKTsKIH0KIAotc3RkOjpwYWlyPEhh
c2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gSWRlbnRpZmllclRhYmxlOjphZGQo
U3RyaW5nSW1wbCogdmFsdWUpCitIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IElkZW50
aWZpZXJUYWJsZTo6YWRkKFN0cmluZ0ltcGwqIHZhbHVlKQogewotICAgIHN0ZDo6cGFpcjxIYXNo
U2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkKHZh
bHVlKTsKLSAgICAoKnJlc3VsdC5maXJzdCktPnNldElzSWRlbnRpZmllcih0cnVlKTsKKyAgICBI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGFibGUuYWRkKHZhbHVl
KTsKKyAgICAoKnJlc3VsdC5pdGVyKS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAppbmRleCBiMDJkMTBkN2M4MTkxYTdh
NWZlN2I1ZTdhNzI0NDJmNTY4ZmQ0NjdkLi5kYmM1YmE2YWM1NGY4NThhNzI0OGI3M2NjMDk2OTc2
OWYwOWEzYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKKysr
IGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCkBAIC00Niw5ICs0Niw5IEBAIGNsYXNz
IElkZW50aWZpZXJUYWJsZSB7CiBwdWJsaWM6CiAgICAgfklkZW50aWZpZXJUYWJsZSgpOwogCi0g
ICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkKFN0
cmluZ0ltcGwqIHZhbHVlKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFk
ZChTdHJpbmdJbXBsKiB2YWx1ZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4KLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBh
ZGQoVSB2YWx1ZSk7CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGQoVSB2
YWx1ZSk7CiAKICAgICBib29sIHJlbW92ZShTdHJpbmdJbXBsKiByKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBkNzc1ZTdiYjk0ZmZlMDYzNmRmMzNiYTJkZTNl
ZDVjMzVjOWY5MWRjLi4wY2E0Mzg0YTE3N2ExOTFhYWM2ZDNmOWJkODc2M2VjNTY1NzJlMjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC03OCwxMSArNzgsMTEgQEAgc3Rh
dGljIGlubGluZSBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgc3RyaW5nVGFibGUoKQogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CiBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdUYWJsZShjb25zdCBUJiB2YWx1ZSkKIHsKLSAg
ICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0g
c3RyaW5nVGFibGUoKS5hZGQ8VCwgSGFzaFRyYW5zbGF0b3I+KHZhbHVlKTsKKyAgICBIYXNoU2V0
PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IHN0cmluZ1RhYmxlKCkuYWRkPFQs
IEhhc2hUcmFuc2xhdG9yPih2YWx1ZSk7CiAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5
LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVh
biBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1
bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0
OworICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdLZXkgPyBhZG9wdFJlZigqYWRkUmVzdWx0Lml0
ZXIpIDogKmFkZFJlc3VsdC5pdGVyOwogfQogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3IgewpA
QCAtMzAwLDcgKzMwMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjph
ZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIGlmICghci0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgU3RyaW5nSW1wbCogcmVzdWx0ID0g
KnN0cmluZ1RhYmxlKCkuYWRkKHIpLmZpcnN0OworICAgIFN0cmluZ0ltcGwqIHJlc3VsdCA9ICpz
dHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyOwogICAgIGlmIChyZXN1bHQgPT0gcikKICAgICAgICAg
ci0+c2V0SXNBdG9taWModHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDQxNThjOThkN2ZmODc0MDM4ZTUxN2I2MGQxOTczYzcyOGRj
ZmFiNzkuLjYyY2M5YmE5NDc5MmJjZmMyOWQwMWE4MGQ3Y2RhOTc5YzViMjVmNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNRTFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OmFjcXVpcmVMb2NrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKICAgICBDb29yZGluYXRpb25JbmZvTWFwOjppdGVyYXRvciBjb29yZGluYXRpb25JbmZvSXRl
cmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuZmluZChkYklkZW50aWZpZXIpOwogICAgIGlm
IChjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPT0gbV9jb29yZGluYXRpb25JbmZvTWFwLmVuZCgp
KSB7CiAgICAgICAgIC8vIE5vIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciB0aGlzIERCCi0gICAg
ICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRpbmF0aW9uSW5mb01hcC5hZGQo
ZGJJZGVudGlmaWVyLCBDb29yZGluYXRpb25JbmZvKCkpLmZpcnN0OworICAgICAgICBjb29yZGlu
YXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuYWRkKGRiSWRlbnRpZmll
ciwgQ29vcmRpbmF0aW9uSW5mbygpKS5pdGVyOwogICAgIH0KIAogICAgIENvb3JkaW5hdGlvbklu
Zm8mIGluZm8gPSBjb29yZGluYXRpb25JbmZvSXRlcmF0b3ItPnNlY29uZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFU
cmFja2VyLmNwcAppbmRleCAyYTA5NjI3OThiYmVmMzI1NGQwMTc1ODM4NTcxYmUzYjQxMjcxNjY3
Li4yN2ZiNzRmZWUwOGJhZDRlZTc4ZGU2OTU2Y2QwYjRkMWMxNGU0MjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9RdW90
YVRyYWNrZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUXVvdGFUcmFja2VyOjp1cGRhdGVE
YXRhYmFzZVNpemUoCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFiYXNlU2l6ZSkKIHsKICAg
ICBNdXRleExvY2tlciBsb2NrRGF0YShtX2RhdGFHdWFyZCk7Ci0gICAgSGFzaE1hcDxTdHJpbmcs
IFNpemVNYXA+OjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VTaXplcy5hZGQob3JpZ2luSWRlbnRp
ZmllciwgU2l6ZU1hcCgpKS5maXJzdDsKKyAgICBIYXNoTWFwPFN0cmluZywgU2l6ZU1hcD46Oml0
ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVNpemVzLmFkZChvcmlnaW5JZGVudGlmaWVyLCBTaXplTWFw
KCkpLml0ZXI7CiAgICAgaXQtPnNlY29uZC5zZXQoZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVNpemUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RI
YXNoVGFibGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hU
YWJsZU1hcC5oCmluZGV4IDJjMGU5NDgzNmYzYzY0NzIyMjJhYjY3MmQ0MzM3NzdmM2UxYTYwNzcu
LmNhODUxNzkzN2Y2MDYyZDQ3NTdmMGRmODU2Y2I1NDE4ZDhmYWM2NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaE1hcDxjb25zdCBKU0M6Okhhc2hUYWJsZSos
IEpTQzo6SGFzaFRhYmxlPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoc3RhdGljVGFibGUp
OwogICAgICAgICBpZiAoaXRlciAhPSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAm
aXRlci0+c2Vjb25kOwotICAgICAgICByZXR1cm4gJm1fbWFwLnNldChzdGF0aWNUYWJsZSwgSlND
OjpIYXNoVGFibGUoKnN0YXRpY1RhYmxlKSkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgcmV0dXJu
ICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpTQzo6SGFzaFRhYmxlKCpzdGF0aWNUYWJsZSkpLml0
ZXItPnNlY29uZDsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcAppbmRleCAwMDUwYTczMTU3ZmRmY2I1ZGUwNzYxZjMyNWY2ZmQx
NWFjMDAwNzZkLi41ZjM0NDdlMjRlOWY0OTZiOWY0MWRhZGU0MmRjZGY0YzVjZTZkN2UxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTI1OCw3ICsy
NTgsNyBAQCBTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dQogewogICAgIEpTRE9NU3RydWN0dXJlTWFw
JiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmVzKCk7CiAgICAgQVNTRVJUKCFz
dHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5mbykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNl
dChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLmZpcnN0LT5zZWNvbmQuZ2V0KCk7Cisg
ICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSku
aXRlci0+c2Vjb25kLmdldCgpOwogfQogCiBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA3OWEzZGFmZDBlNjRiYTVkOGIw
ZWI1N2U4ZTgxZTkyY2VjODRjM2QzLi4zNzY0MTA5YzA2ODQ1NTgyMWRjZTJjNWM1NzNhMzUzN2Ix
NGIwZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAt
MTQyLDggKzE0Miw4IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIGlm
IChzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKHdvcmxkLCBkb21PYmplY3QsIHdyYXBwZXIpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBKU0M6OlBhc3NXZWFrPEpTRE9NV3JhcHBlcj4gcGFz
c1dlYWsoKndvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIHdyYXBwZXJPd25lcih3b3JsZCwg
ZG9tT2JqZWN0KSwgd3JhcHBlckNvbnRleHQod29ybGQsIGRvbU9iamVjdCkpOwotICAgICAgICBw
YWlyPERPTU9iamVjdFdyYXBwZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSB3b3JsZC0+
bV93cmFwcGVycy5hZGQoZG9tT2JqZWN0LCBwYXNzV2Vhayk7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgRE9NT2JqZWN0V3JhcHBlck1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IHdvcmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmplY3QsIHBhc3NX
ZWFrKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0tleSk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgdm9pZCB1bmNh
Y2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBK
U0RPTVdyYXBwZXIqIHdyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaAppbmRleCBhZGNkMzg4OWZmMjc4N2UwZmE0YTIyMGRhYzY0NzY1NTc2
ZDg1MTEwLi45ODQ3NjQ0ZDdjZmFlNGY3NDFhYjg0YmM3YmNiNTkwMDE4NDk1MzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTk1LDcg
Kzk1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBKU0M6OkpTT2JqZWN0KiBjb25z
dHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZShleGVjLCBDb25zdHJ1Y3RvckNsYXNz
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb25zdF9jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KSksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAg
ICAgQVNTRVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+
Y29uc3RydWN0b3JzKCkuY29udGFpbnMoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbykpOwogICAg
ICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiB0ZW1wOwotICAgICAgICBjb25z
dF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCku
YWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRlbXApLmZpcnN0LT5zZWNvbmQuc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIGNv
bnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMo
KS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVtcCkuaXRlci0+c2Vjb25kLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOwogICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBjOGYxNmY1YTk2MTY1YmU4
ZTEzZGIyYmViNWVhYjE2MDgzN2U5MjBjLi5jYzNmMmQxMTcwNjM3Y2I0OGEzOTM3YWZmNWM0ZjU2
ZGVjNzFmYzM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCB2b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBh
Z2UqIHBhZwogICAgIEFTU0VSVF9BUkcobGlzdGVuZXIsIGxpc3RlbmVyKTsKICAgICBBU1NFUlRf
QVJHKHBhZ2UsIHBhZ2UpOwogCi0gICAgcGFpcjxQYWdlTGlzdGVuZXJzTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmFkZChwYWdlLCAwKTsKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgTGlzdGVu
ZXJTZXQ7CisgICAgUGFnZUxpc3RlbmVyc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZUxp
c3RlbmVyc01hcC5hZGQocGFnZSwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsKIAotICAgIExpc3RlbmVy
U2V0KiBsaXN0ZW5lcnMgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBMaXN0ZW5lclNldCog
bGlzdGVuZXJzID0gcmVzdWx0Lml0ZXItPnNlY29uZDsKICAgICBsaXN0ZW5lcnMtPmFkZChsaXN0
ZW5lcik7CiAKICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBmNDk1Y2Vk
Yzg2MzlmMGZmM2FjOTdjYzM2M2M2MzdhYzQxY2QzMjUwLi42YmMzM2I4MGM5MTFmNjAwOTdmNDdh
ZmQzNzY1YzdiNzUzNTIyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTY3JpcHREZWJ1
Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3Jp
cHRCcmVhCiAgICAgICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVl
KTsKICAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAg
IGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0Jy
ZWFrcG9pbnRNYXAoKSkuZmlyc3Q7CisgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2lu
dHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcjsKICAgICBp
ZiAoaXQtPnNlY29uZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKSkK
ICAgICAgICAgcmV0dXJuICIiOwogICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQu
bGluZU51bWJlciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTZmMGE4MTQ4
NzQxMzdmNTI1YmM0OTUzNmUzMTQyZmExODgyMmVkZS4uNTJhOTkwYTViNTAyYWI1ZDcwYjlkZDIz
ODljYTdkMjVmMDU3YTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOTIsMTMgKzM5MiwxMyBAQCBwcml2YXRl
OgogICAgIGJvb2wgc3RhcnRPYmplY3RJbnRlcm5hbChKU09iamVjdCogb2JqZWN0KQogICAgIHsK
ICAgICAgICAgLy8gUmVjb3JkIG9iamVjdCBmb3IgZ3JhcGggcmVjb25zdHJ1Y3Rpb24KLSAgICAg
ICAgcGFpcjxPYmplY3RQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fb2JqZWN0UG9vbC5h
ZGQob2JqZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgT2JqZWN0UG9vbDo6QWRk
UmVzdWx0IGFkZFJlc3VsdCA9IG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wu
c2l6ZSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSBkdXBsaWNhdGUgcmVmZXJlbmNl
cwotICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kKSB7CisgICAgICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3S2V5KSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwotICAgICAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGl0ZXIuZmlyc3QtPnNlY29uZCkgPCBt
X29iamVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoaXRlci5m
aXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90Pihh
ZGRSZXN1bHQuaXRlci0+c2Vjb25kKSA8IG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAgICAg
ICAgd3JpdGVPYmplY3RJbmRleChhZGRSZXN1bHQuaXRlci0+c2Vjb25kKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcyNiwxMCArNzI2LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7
CiAgICAgICAgIFVTdHJpbmcgc3RyID0gaWRlbnQudXN0cmluZygpOwotICAgICAgICBwYWlyPFN0
cmluZ0NvbnN0YW50UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX2NvbnN0YW50UG9vbC5h
ZGQoc3RyLmltcGwoKSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFpdGVy
LnNlY29uZCkgeworICAgICAgICBTdHJpbmdDb25zdGFudFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1
bHQgPSBtX2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwoKSwgbV9jb25zdGFudFBvb2wuc2l6ZSgp
KTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgICAgIHdyaXRl
KFN0cmluZ1Bvb2xUYWcpOwotICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChpdGVyLmZpcnN0
LT5zZWNvbmQpOworICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChhZGRSZXN1bHQuaXRlci0+
c2Vjb25kKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCmluZGV4IDZmZGYzNzM0MmUwMzBjZDZlZWRhNWY3
MTBhYjkyZWE5MTkzYTQwZDAuLmQxODdhZThlNWM2ZjkxNDUwYTYzOWIxOWNjOTVjY2FlNDQzZGE3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCkBAIC0xNjMs
NyArMTYzLDcgQEAgTlBPYmplY3QqIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoTlBQIG5wcCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIERPTVdpbmQKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGl0ZXIgPSBzdGF0aWNWOE5QT2JqZWN0TWFwKCkt
PnNldCh2OE9iamVjdEhhc2gsIFY4TlBPYmplY3RWZWN0b3IoKSkuZmlyc3Q7IAorICAgICAgICBp
dGVyID0gc3RhdGljVjhOUE9iamVjdE1hcCgpLT5zZXQodjhPYmplY3RIYXNoLCBWOE5QT2JqZWN0
VmVjdG9yKCkpLml0ZXI7CiAgICAgfQogCiAgICAgVjhOUE9iamVjdCogdjhucE9iamVjdCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KF9OUE5fQ3JlYXRlT2JqZWN0KG5wcCwgJlY4TlBP
YmplY3RDbGFzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZp
ZXJSZXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCmluZGV4
IGZlZDQ3Y2E1ZWVlODY2NjAxNjI0NThlM2UxMDRmNDYxMmYxZGY4ZmYuLjA3OGEzMTRmMjA3NGQ4
YTNhZWExNjRhMzJhNzY1OWNkMjg1MmVmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9JZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRp
ZmllclJlcC5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBJZGVudGlmaWVyUmVwKiBJZGVudGlmaWVy
UmVwOjpnZXQoaW50IGludElEKQogICAgICAgICByZXR1cm4gaWRlbnRpZmllcjsKICAgICB9CiAg
ICAgCi0gICAgcGFpcjxJbnRJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
aW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7IAotICAgIGlmIChyZXN1bHQuc2Vjb25k
KSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKKyAgICBJbnRJZGVu
dGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gaW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJ
RCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQoIXJlc3Vs
dC5pdGVyLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbmV3IElkZW50
aWZpZXJSZXAoaW50SUQpOwogICAgICAgICAKLSAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0
Lml0ZXItPnNlY29uZCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNl
Y29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsKIH0KIAogdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcCo+IFN0cmluZ0lkZW50aWZpZXJN
YXA7CkBAIC05MywxNSArOTMsMTUgQEAgSWRlbnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0
KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIHJldHVybiAwOwogICAKICAgICBVU3RyaW5nIHN0
cmluZyA9IHN0cmluZ1RvVVN0cmluZyhTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNr
KG5hbWUsIHN0cmxlbihuYW1lKSkpOwotICAgIHBhaXI8U3RyaW5nSWRlbnRpZmllck1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmlt
cGwoKSwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1
bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElk
ZW50aWZpZXJSZXAobmFtZSk7CisgICAgU3RyaW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IHN0cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CisgICAg
aWYgKHJlc3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyLT5zZWNv
bmQpOworICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFt
ZSk7CiAgICAgICAgIAotICAgICAgICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5maXJzdC0+
c2Vjb25kKTsKKyAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuaXRlci0+c2Vjb25k
KTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJl
dHVybiByZXN1bHQuaXRlci0+c2Vjb25kOwogfQogCiBib29sIElkZW50aWZpZXJSZXA6OmlzVmFs
aWQoSWRlbnRpZmllclJlcCogaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmpl
Y3QuY3BwCmluZGV4IDJjYmU5MjNmNWQwMGEyMTJiYTY5MDRhYmJiNjQxMWY5NWUzMDU0MzEuLjM4
ODg5ZTc5Y2IxNTZmMGU3OGY4MzhlMDE1OWU0MzI5ZjlhMGE0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhh
c2hNYXA8Um9vdE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21h
cC5maW5kKHJvb3RPYmplY3QpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkgewog
ICAgICAgICAgICAgcm9vdE9iamVjdC0+YWRkSW52YWxpZGF0aW9uQ2FsbGJhY2soJm1faW52YWxp
ZGF0aW9uQ2FsbGJhY2spOwotICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFkZChyb290T2JqZWN0
LCBKU1RvTlBPYmplY3RNYXAoKSkuZmlyc3Q7CisgICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRk
KHJvb3RPYmplY3QsIEpTVG9OUE9iamVjdE1hcCgpKS5pdGVyOwogICAgICAgICB9CiAKICAgICAg
ICAgQVNTRVJUKGl0ZXItPnNlY29uZC5maW5kKGpzT2JqZWN0KSA9PSBpdGVyLT5zZWNvbmQuZW5k
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCBiOTg5YzFkNWE2ZWFjNzA4ODk0MzRmNTFjOTA3NjYzZmE3MzcyMmU0Li5m
NmYzZDRiM2EyYjE3YzExOGVlMjljOTExY2NiNzZjYzk2ZjIyNjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTI0Nyw3
ICsxMjQ3LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IHByb3AKIHN0YXRpYyB2b2lkIGxvZ1VuaW1w
bGVtZW50ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlEKQogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0LCAoKSk7Ci0gICAgaWYgKCFwcm9wZXJ0
eUlEU2V0LmFkZChwcm9wZXJ0eUlEKS5zZWNvbmQpCisgICAgaWYgKCFwcm9wZXJ0eUlEU2V0LmFk
ZChwcm9wZXJ0eUlEKS5pc05ld0tleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HX0VSUk9S
KCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMn
LiIsIGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlE
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTM2NzM1
YWZiNmIxNzM0NzE3MDg2N2U3NDg0MTdkN2UzZDY3MmU0Yi4uM2U5MGE1M2U5NzJlM2QyMzVlN2E1
ZDY0YWFiZDAwYWYwOTRjMjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291
cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICB1
bnNpZ25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsg
MSkgPDwgNiB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSA8PCA0CiAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSA9PSBUZXh0
T3JpZW50YXRpb25VcHJpZ2h0ID8gOCA6IDApIHwgKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsID8gNCA6IDApIHwgKHN5bnRoZXRpY0JvbGQgPyAyIDogMCkgfCAoc3lu
dGhldGljSXRhbGljID8gMSA6IDApOwogCi0gICAgU2ltcGxlRm9udERhdGEqJiBjYWNoZWREYXRh
ID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNp
bXBsZUZvbnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwg
MCkuaXRlci0+c2Vjb25kOwogICAgIGlmIChjYWNoZWREYXRhKQogICAgICAgICByZXR1cm4gY2Fj
aGVkRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA2ZDIy
ZmRjY2QwZDU3OWQwOGM0YTY1YzJlNmU1ZmZiYmI1YTI0ZmE1Li5lMGE3MzlhYzBmOWFkMzdlYTcw
NzAxZmVlNjVjYjMzYjQxNzZkZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFj
ZVJ1bGUoY29uc3QgQ1NTRm9udEZhY2VSdWxlKiBmb250RmFjZVJ1bGUpCiAgICAgICAgIGlmIChm
YW1pbHlOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE93
blB0cjxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+ID4mIGZhbWlseUZvbnRGYWNlcyA9IG1f
Zm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgICAg
ICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMg
PSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAg
ICAgICBpZiAoIWZhbWlseUZvbnRGYWNlcykgewogICAgICAgICAgICAgZmFtaWx5Rm9udEZhY2Vz
ID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4pOwogCkBAIC00ODcs
MTMgKzQ4NywxMyBAQCBGb250RGF0YSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYwogICAgICAgICByZXR1cm4gZm9u
dERhdGFGb3JHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5
TmFtZSk7CiAgICAgfQogCi0gICAgT3duUHRyPEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NT
ZWdtZW50ZWRGb250RmFjZT4gPiA+JiBzZWdtZW50ZWRGb250RmFjZUNhY2hlID0gbV9mb250cy5h
ZGQoZmFtaWx5LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxIYXNoTWFwPHVu
c2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZh
Y2VDYWNoZSA9IG1fZm9udHMuYWRkKGZhbWlseSwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAg
IGlmICghc2VnbWVudGVkRm9udEZhY2VDYWNoZSkKICAgICAgICAgc2VnbWVudGVkRm9udEZhY2VD
YWNoZSA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVk
Rm9udEZhY2U+ID4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzayA9IGZvbnREZXNj
cmlwdGlvbi50cmFpdHNNYXNrKCk7CiAKLSAgICBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+
JiBmYWNlID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01hc2ssIDApLmZpcnN0
LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFjZSA9IHNlZ21l
bnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVyLT5zZWNvbmQ7CiAgICAg
aWYgKCFmYWNlKSB7CiAgICAgICAgIGZhY2UgPSBDU1NTZWdtZW50ZWRGb250RmFjZTo6Y3JlYXRl
KHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApp
bmRleCBmNDYyYzI0YzRkNjU3NTY1YjM2ZTAzMjllZjVhZTQ3ZDhjM2NmNjgwLi4wNjcxYzNhOTFi
OGM3MjViZjRlYWYzYTFkZGY0ZmY4NmUxMGUyYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRm9udERhdGEqIENTU1Nl
Z21lbnRlZEZvbnRGYWNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGkKICAgICBGb250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRzTWFzayA9IGZvbnREZXNj
cmlwdGlvbi50cmFpdHNNYXNrKCk7CiAgICAgdW5zaWduZWQgaGFzaEtleSA9ICgoZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCAoRm9udFRyYWl0c01hc2tXaWR0aCAr
IDEpKSB8ICgoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwgPyAxIDog
MCkgPDwgRm9udFRyYWl0c01hc2tXaWR0aCkgfCBkZXNpcmVkVHJhaXRzTWFzazsKIAotICAgIFNl
Z21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXks
IDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU2VnbWVudGVkRm9udERhdGEqJiBmb250RGF0YSA9IG1f
Zm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmIChmb250
RGF0YSkKICAgICAgICAgcmV0dXJuIGZvbnREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IDMxYTg3YWYwYzNiMzRmOGU2NmY3NDhmYTEx
NmZkYjE3ZTQ1NDdkMzEuLmI3MmRjYWZiYmY1YmM4ODlhNWU0YjVkNmExOGEyM2E4MzcxOWM0MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCkBAIC0x
MDA0LDcgKzEwMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgQ291bnRlckRpcmVjdGl2
ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IHBhcmVudE1h
cC5lbmQoKTsKICAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmVudE1hcC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3Rp
dmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0LT5zZWNv
bmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQo
aXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyLT5zZWNvbmQ7CiAgICAgICAgICAg
ICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0
aXZlcy5tX3Jlc2V0ID0gaXQtPnNlY29uZC5tX3Jlc2V0OwogICAgICAgICAgICAgICAgIGRpcmVj
dGl2ZXMubV9yZXNldFZhbHVlID0gaXQtPnNlY29uZC5tX3Jlc2V0VmFsdWU7CkBAIC0xMDUyLDcg
KzEwNTIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVy
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3Ry
aW5nVmFsdWUoKTsKICAgICAgICAgICAgIGludCB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpLT5nZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAg
Q291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgp
LCBDb3VudGVyRGlyZWN0aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRl
ckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3Vu
dGVyRGlyZWN0aXZlcygpKS5pdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJl
aGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDE5NjFkNTI2Njk1NjIz
YWNhNmMxNzQ3YTUzNDRhOWUyYjBmM2M4ZGYuLjE0ZTEwY2IzY2JjYWRlMzhkYjAzOWM1MmViM2Jm
ODg1ODM3ZTcyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAg
LTQ5NiwxMCArNDk2LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5
bGVzaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSCiAjaWYgRU5BQkxFKFNU
WUxFX1NDT1BFRCkKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1p
bmVTY29wZShjc3NTaGVldCk7CiAgICAgICAgIGlmIChzY29wZSkgewotICAgICAgICAgICAgcGFp
cjxTY29wZWRSdWxlU2V0TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRB
dXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlmIChhZGRSZXN1
bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRv
cHRQdHIobmV3IFJ1bGVTZXQoKSk7Ci0gICAgICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29u
ZC0+YWRkUnVsZXNGcm9tU2hlZXQoY3NzU2hlZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOwor
ICAgICAgICAgICAgU2NvcGVkUnVsZVNldE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc2Nv
cGVkQXV0aG9yU3R5bGVzLmFkZChzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3S2V5KQorICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyLT5zZWNvbmQg
PSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyLT5z
ZWNvbmQtPmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1NoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3Bl
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTIzNzMsNyAr
MjM3Myw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtl
eSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiB7CiAgICAgaWYgKCFrZXkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5h
ZGQoa2V5LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxWZWN0b3I8UnVsZURh
dGE+ID4mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBp
ZiAoIXJ1bGVzKQogICAgICAgICBydWxlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UnVsZURhdGE+
KTsKICAgICBydWxlcy0+YXBwZW5kKHJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9v
bC5jcHAKaW5kZXggYzQ2YzcwNDdjNTAwZTRiMjgzZjNkN2VjNTg0YmQ5YjhlOTM0NmVlYS4uZjY5
ODNjYTMxZjZmMWM5MzcxOWEyZWNlZGQ2ZmUzZDM5ZDllMTgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlUG9vbC5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQgaWRlbnQpCiAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7
CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGR1bW15VmFsdWU7Ci0gICAgcGFpcjxJ
ZGVudGlmaWVyVmFsdWVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9pZGVudGlmaWVy
VmFsdWVDYWNoZS5hZGQoaWRlbnQsIGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQp
Ci0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihpZGVudCk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAg
SWRlbnRpZmllclZhbHVlQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IG1faWRlbnRpZmllclZhbHVl
Q2FjaGUuYWRkKGlkZW50LCBkdW1teVZhbHVlKTsKKyAgICBpZiAoZW50cnkuaXNOZXdLZXkpCisg
ICAgICAgIGVudHJ5Lml0ZXItPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKGlkZW50KTsKKyAgICByZXR1cm4gZW50cnkuaXRlci0+c2Vjb25kOwogfQogCiBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUo
dW5zaWduZWQgcmdiVmFsdWUpCkBAIC03OCwxMCArNzgsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZh
bHVlKQogICAgICAgICBtX2NvbG9yVmFsdWVDYWNoZS5jbGVhcigpOwogCiAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8Q29sb3JWYWx1ZUNhY2hlOjpp
dGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2NvbG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1
bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5z
ZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOwotICAgIHJl
dHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0
IGVudHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKKyAg
ICBpZiAoZW50cnkuaXNOZXdLZXkpCisgICAgICAgIGVudHJ5Lml0ZXItPnNlY29uZCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7CisgICAgcmV0dXJuIGVudHJ5Lml0
ZXItPnNlY29uZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQ
b29sOjpjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMgdHlwZSkKQEAgLTExNywxNSArMTE3LDE1IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpCiAg
ICAgfQogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBh
aXI8SW50ZWdlclZhbHVlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IGNhY2hlLT5hZGQo
aW50VmFsdWUsIGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVu
dHJ5LmZpcnN0LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBl
KTsKLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJbnRlZ2VyVmFsdWVDYWNo
ZTo6QWRkUmVzdWx0IGVudHJ5ID0gY2FjaGUtPmFkZChpbnRWYWx1ZSwgZHVtbXlWYWx1ZSk7Cisg
ICAgaWYgKGVudHJ5LmlzTmV3S2V5KQorICAgICAgICBlbnRyeS5pdGVyLT5zZWNvbmQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICByZXR1cm4gZW50cnkuaXRl
ci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBv
b2w6OmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7Ci0g
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNh
Y2hlLmFkZChmYW1pbHlOYW1lLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVDYWNoZS5hZGQoZmFtaWx5TmFt
ZSwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1NUUklORyk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VWYWx1ZUNhY2hlLnNpemUoKSA+IG1h
eGltdW1Gb250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9mb250RmFjZVZhbHVlQ2FjaGUuY2xl
YXIoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1ZSA9IG1fZm9udEZhY2VWYWx1
ZUNhY2hlLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4mIHZhbHVlID0gbV9mb250RmFjZVZhbHVlQ2FjaGUuYWRkKHN0cmluZywgMCkuaXRlci0+
c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRGYWNlVmFsdWUoc3RyaW5nLCBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgcmV0dXJuIHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCmluZGV4IDQ3
MGRhMmFkNWM3M2IxNzkyYWU2MjNkOTQ4MjY4YjhkNjU1ZTZjNTguLjVjNDJlZjcwODE4NzFhNWJk
MjFjNTE5YmRkOTgwYTA0ZWU4ODI0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGVja2VkUmFkaW9CdXR0b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJh
ZGlvQnV0dG9ucy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjpz
ZXRDaGVja2VkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHZvaWQgUmFkaW9CdXR0
b25Hcm91cDo6YWRkKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHsKICAgICBBU1NFUlQoYnV0
dG9uLT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmICghbV9tZW1iZXJzLmFkZChidXR0b24pLnNl
Y29uZCkKKyAgICBpZiAoIW1fbWVtYmVycy5hZGQoYnV0dG9uKS5pc05ld0tleSkKICAgICAgICAg
cmV0dXJuOwogICAgIGJvb2wgZ3JvdXBXYXNWYWxpZCA9IGlzVmFsaWQoKTsKICAgICBpZiAoYnV0
dG9uLT5yZXF1aXJlZCgpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ2hlY2tlZFJhZGlvQnV0
dG9uczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFtX25h
bWVUb0dyb3VwTWFwKQogICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gYWRvcHRQdHIobmV3IE5h
bWVUb0dyb3VwTWFwKTsKIAotICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBt
X25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxS
YWRpb0J1dHRvbkdyb3VwPigpKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxSYWRpb0J1dHRv
bkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmlt
cGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5pdGVyLT5zZWNvbmQ7CiAgICAg
aWYgKCFncm91cCkKICAgICAgICAgZ3JvdXAgPSBSYWRpb0J1dHRvbkdyb3VwOjpjcmVhdGUoKTsK
ICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IGNiYWFhNGVmZWMwMTdiMzYyMmI2ODQ5NGNkZTRmMTkz
MWNjYWJkOGYuLmNmMDRjNWVjNjNmNDRhMjQwM2Q5Y2I3ZDk3MzM0YzI5YWUwMjNiMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKQEAgLTIxMSw5
ICsyMTEsOSBAQCB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0
aW9uUm91dGVyOjp3aWxsUmVtb3ZlQ2hpbGQoTm9kZSogdAogCiB2b2lkIENoaWxkTGlzdE11dGF0
aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjppbmNyZW1lbnRTY29waW5nTGV2
ZWwoTm9kZSogdGFyZ2V0KQogewotICAgIHBhaXI8U2NvcGluZ0xldmVsTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0YXJnZXQsIDEpOwotICAgIGlmICgh
cmVzdWx0LnNlY29uZCkgewotICAgICAgICArKyhyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAg
U2NvcGluZ0xldmVsTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0
YXJnZXQsIDEpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CisgICAgICAgICsrKHJlc3Vs
dC5pdGVyLT5zZWNvbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA5NmY5Y2M5OWZjNjFiZmE2NjhkYjM0NTZhNjViNmRiZDc5OGQzMjhjLi43
NDRkNjlkNzM2MjliY2ZkNzQ5YWE2N2UzYTJhNDAyNDMzMzA4YTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTQ1MjEsNyArNDUyMSw3IEBAIEhUTUxBbGxDb2xsZWN0aW9uKiBEb2N1bWVu
dDo6YWxsKCkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9u
PiYgY29sbGVjdGlvbiA9IG1fd2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1w
bCgpLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rp
b24+JiBjb2xsZWN0aW9uID0gbV93aW5kb3dOYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFtZS5p
bXBsKCksIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBpZiAoIWNvbGxlY3Rpb24pCiAgICAg
ICAgIGNvbGxlY3Rpb24gPSBIVE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBXaW5kb3dO
YW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQoKTsKQEAgLTQ1Mjks
NyArNDUyOSw3IEBAIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAKIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6ZG9j
dW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25QdHI8
SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xs
ZWN0aW9ucy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3du
UHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX2RvY3VtZW50TmFtZWRJdGVt
Q29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAgICAg
aWYgKCFjb2xsZWN0aW9uKQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9u
OjpjcmVhdGUodGhpcywgRG9jdW1lbnROYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29s
bGVjdGlvbi5nZXQoKTsKQEAgLTQ5MjIsNyArNDkyMiw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QKIAogSFRNTENhbnZhc0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVt
ZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAg
ICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50
cy5hZGQobmFtZSwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAg
ZWxlbWVudCA9IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIGVs
ZW1lbnQuZ2V0KCk7CkBAIC01NzI1LDEyICs1NzI1LDEyIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IERvY3VtZW50OjpnZXRJdGVtcyhjb25zdCBTdHJpbmcmIHR5cGVOYW1lcykKICAgICAvLyBJbiB0
aGlzIGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgYW4gdW5pcXVlIHN0cmluZyBpZGVudGlmaWVyIHRv
IG1hcCBzdWNoIHJlcXVlc3QgaW4gdGhlIGNhY2hlLgogICAgIFN0cmluZyBsb2NhbFR5cGVOYW1l
cyA9IHR5cGVOYW1lcy5pc051bGwoKSA/IFN0cmluZygiaHR0cDovL3dlYmtpdC5vcmcvbWljcm9k
YXRhL3VuZGVmaW5lZEl0ZW1UeXBlIikgOiB0eXBlTmFtZXM7CiAKLSAgICBwYWlyPE5vZGVMaXN0
c05vZGVEYXRhOjpNaWNyb0RhdGFJdGVtTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0
ID0gbm9kZUxpc3RzLT5tX21pY3JvRGF0YUl0ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVz
LCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PE5vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6
Ok1pY3JvRGF0YUl0ZW1MaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBub2RlTGlzdHMtPm1f
bWljcm9EYXRhSXRlbUxpc3RDYWNoZS5hZGQobG9jYWxUeXBlTmFtZXMsIDApOworICAgIGlmICgh
cmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVz
dWx0Lml0ZXItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8TWljcm9EYXRhSXRlbUxpc3Q+IGxpc3Qg
PSBNaWNyb0RhdGFJdGVtTGlzdDo6Y3JlYXRlKHRoaXMsIHR5cGVOYW1lcyk7Ci0gICAgcmVzdWx0
LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBs
aXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCA1Yjg5OWIzZjU3OGEyNzQzOTgyNDg1
OThiOWQyOWFkOTg4ZjAwMzZlLi44ZDJhMGEyNWVkODk0MjJmMWZiMDU3ZjU0MTgxNWU2ZDFjM2Y2
ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNzcs
NyArNzcsNyBAQCBib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoZXZl
bnQtPnRhcmdldCgpKTsKLSAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2
ZW50KS5zZWNvbmQ7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChldmVu
dCkuaXNOZXdLZXk7CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJ
dCBzaG91bGQgbm90IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgogICAgIAogICAgIGlm
ICghbV9wZW5kaW5nRXZlbnRUaW1lci0+aXNBY3RpdmUoKSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNz
UmVmUHRyPE5vZGU+IHRhcmdldCwgUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0LmdldCgpKS5zZWNvbmQp
CisgICAgaWYgKCFtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0LmdldCgp
KS5pc05ld0tleSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdl
dCh0YXJnZXQpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpw
ZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBmb3Igd2hl
cmUgd2Ugc2hvdWxkIHN0b3AuCiAgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250YWlucygw
KSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5zZWNvbmQ7Cisg
ICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5pc05ld0tleTsKICAgICBB
U1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBh
bHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCiAKICAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVl
PiBwcm90ZWN0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAu
Y3BwCmluZGV4IGJjYjIzYjQ5NjJmNjQ2NmJiNjFiOGFlYmFmYTQwNWZlZTg4ZTkzMDMuLjRjM2Ez
ZGQyY2NiNjJkZjE0ZGY3ZTdjMjhhMjYzN2Q3MGQwM2FhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC02OSwxNCArNjksMTQgQEAgdm9pZCBEb2N1bWVu
dE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgaWYgKCFtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CiAgICAgICAgIC8v
IEZhc3QgcGF0aC4gVGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxpY2F0ZUNvdW50cywg
c28gd2UgYXNzdW1lIHRoYXQgaXQncwogICAgICAgICAvLyBhbHNvIG5vdCBhbHJlYWR5IGluIG1f
bWFwIGFuZCB0cnkgdG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywgd2UncmUgZG9uZS4K
LSAgICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX21hcC5hZGQo
a2V5LCBlbGVtZW50KTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgIE1h
cDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGVsZW1lbnQpOworICAgICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3S2V5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IC8vIFRoZSBhZGQgZmFpbGVkLCBzbyB0aGlzIGtleSB3YXMgYWxyZWFkeSBjYWNoZWQgaW4gbV9t
YXAuCiAgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMga2V5
LiBSZW1vdmUgdGhlIG1fbWFwCiAgICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIGtleSBzbyBnZXQg
c2VhcmNoZXMgZm9yIGl0IG5leHQgdGltZSBpdCBpcyBjYWxsZWQuCi0gICAgICAgIG1fbWFwLnJl
bW92ZShhZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0Lml0
ZXIpOwogICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVt
b3ZlIHRoZSBtX21hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4
IDc3NGU2NjU3NGE2YmNjMWRlY2ZhOTY2OTYzZGJhOTYwYWE5OWM0NDkuLmU2ZjgyMGYwOTFiZGNk
MjIyYzY4YzU3ZWJlYjQ3Mjk1OGFiOTc1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0
ZW5lck1hcC5jcHAKQEAgLTEzNCwxMSArMTM0LDExIEBAIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6
YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
CiAgICAgfQogCiAgICAgaWYgKG1faGFzaE1hcCkgewotICAgICAgICBwYWlyPEV2ZW50TGlzdGVu
ZXJIYXNoTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9oYXNoTWFwLT5hZGQoZXZlbnRU
eXBlLCBudWxscHRyKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBFdmVudExpc3RlbmVyVmVjdG9yKTsK
KyAgICAgICAgRXZlbnRMaXN0ZW5lckhhc2hNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hhc2hN
YXAtPmFkZChldmVudFR5cGUsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3S2V5
KQorICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBFdmVudExp
c3RlbmVyVmVjdG9yKTsKIAotICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1
bHQuZmlyc3QtPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICBy
ZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuaXRlci0+c2Vjb25kLmdldCgpLCBsaXN0
ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3NpbmdsZUV2ZW50TGlzdGVu
ZXJWZWN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1MzQwY2I0ZTI0NjJiODZiNTBhMmU1ZjY4
MTY5OTQyMmEzZGUyYTNmLi4yNGM1NTVlZGUxZjU4YWE2NjkwNGRiZTVlMTU5YWJmZDg5MGUwZWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODEsOSArMTgxLDkgQEAgdm9pZCBOb2RlOjpkdW1wU3Rh
dGlzdGljcygpCiAKICAgICAgICAgICAgICAgICAvLyBUYWcgc3RhdHMKICAgICAgICAgICAgICAg
ICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAg
ICAgICAgICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIHNpemVfdD46Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kKys7CisgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD46
OkFkZFJlc3VsdCByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+dGFnTmFtZSgpLCAx
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCsrOwogCiAgICAgICAgICAgICAgICAgaWYgKEVsZW1l
bnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVu
Z3RoKCk7CkBAIC0xNjAwLDEyICsxNjAwLDEyIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6
OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogCiAg
ICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0b20gPSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlz
dHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVu
c3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hl
LmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7Cisg
ICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQg
PSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RD
YWNoZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuaXRlci0+c2Vjb25k
KTsKIAogICAgIFJlZlB0cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUo
dGhpcywgc3RhckF0b20sIGxvY2FsTmFtZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25k
ID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7ICAgCiB9CiAKQEAgLTE2MjMsMzYgKzE2MjMsMzYgQEAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVUKIAogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWVBdG9t
ID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGVO
Uzo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdAorICAgIE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2Rl
TGlzdENhY2hlTlM6OkFkZFJlc3VsdCByZXN1bHQKICAgICAgICAgPSBlbnN1cmVSYXJlRGF0YSgp
LT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZU5TLmFkZChRdWFsaWZp
ZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWVBdG9tLCBuYW1lc3BhY2VVUkkpLmltcGwoKSwgMCk7
Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdO
b2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5
KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXItPnNl
Y29uZCk7CiAKICAgICBSZWZQdHI8VGFnTm9kZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3Jl
YXRlKHRoaXMsIG5hbWVzcGFjZVVSSS5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lQXRvbSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgp
OworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0
LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNC
eU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSkKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05v
ZGVEYXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3Vy
ZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5h
ZGQoZWxlbWVudE5hbWUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0
dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBOb2Rl
TGlzdHNOb2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1
cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbmFtZU5vZGVMaXN0Q2FjaGUu
YWRkKGVsZW1lbnROYW1lLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAg
cmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5pdGVyLT5zZWNvbmQpOwogCiAgICAg
UmVmUHRyPE5hbWVOb2RlTGlzdD4gbGlzdCA9IE5hbWVOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIGVs
ZW1lbnROYW1lKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAg
cmVzdWx0Lml0ZXItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVE
YXRhOjpDbGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBOb2Rl
TGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0CiAgICAg
ICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNzTm9k
ZUxpc3RDYWNoZS5hZGQoY2xhc3NOYW1lcywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQp
OworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxO
b2RlTGlzdD4ocmVzdWx0Lml0ZXItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8Q2xhc3NOb2RlTGlz
dD4gbGlzdCA9IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBjbGFzc05hbWVzKTsKLSAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29u
ZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCkBAIC0yNTc5
LDkgKzI1NzksOSBAQCB2b2lkIE5vZGU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0
aW9uKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosCiAgICAgICAgICAgICBNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSByZWdpc3RyeS0+YXQoaSkuZ2V0
KCk7CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRSZWNlaXZlTXV0YXRpb25G
cm9tKHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgTXV0YXRp
b25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5k
ZWxpdmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hNYXA8V2ViS2l0TXV0
YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBk
ZWxpdmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25z
OworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG9ic2VydmVycy5h
ZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOworICAgICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQu
aXRlci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKIAogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yNTkyLDkgKzI1OTIsOSBAQCB2b2lkIE5vZGU6OmNvbGxlY3RNYXRjaGluZ09ic2Vy
dmVyc0Zvck11dGF0aW9uKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosCiAgICAgICAg
ICAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSAqaXRlcjsK
ICAgICAgICAgICAgIGlmIChyZWdpc3RyYXRpb24tPnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20o
dGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSkpIHsKICAgICAgICAgICAgICAgICBNdXRhdGlvblJl
Y29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlvbnMgPSByZWdpc3RyYXRpb24tPmRlbGl2
ZXJ5T3B0aW9ucygpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+OjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2
ZXJ5T3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7Cisg
ICAgICAgICAgICAgICAgSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25S
ZWNvcmREZWxpdmVyeU9wdGlvbnM+OjpBZGRSZXN1bHQgcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChy
ZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0aW9ucyk7CisgICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVy
LT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGE3NDI2Mjk1ZWYwNjRl
YmU5YzBmYWRlZjBmNjcwMWQ1MTY1OGRhM2UuLmM4ZWEwYmZhY2Q3NGFkY2EwY2EwZTJkZTBhZmZl
YjA3YTgyMzI2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTU2LDkg
KzU2LDkgQEAgdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsLCBjb25zdCBBdG8KICAgICBpZiAoIWdOYW1lQ2FjaGUpCiAg
ICAgICAgIGdOYW1lQ2FjaGUgPSBuZXcgUU5hbWVTZXQ7CiAgICAgUXVhbGlmaWVkTmFtZUNvbXBv
bmVudHMgY29tcG9uZW50cyA9IHsgcC5pbXBsKCksIGwuaW1wbCgpLCBuLmlzRW1wdHkoKSA/IG51
bGxBdG9tLmltcGwoKSA6IG4uaW1wbCgpIH07Ci0gICAgcGFpcjxRTmFtZVNldDo6aXRlcmF0b3Is
IGJvb2w+IGFkZFJlc3VsdCA9IGdOYW1lQ2FjaGUtPmFkZDxRdWFsaWZpZWROYW1lQ29tcG9uZW50
cywgUU5hbWVDb21wb25lbnRzVHJhbnNsYXRvcj4oY29tcG9uZW50cyk7Ci0gICAgbV9pbXBsID0g
KmFkZFJlc3VsdC5maXJzdDsgICAgCi0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIFFO
YW1lU2V0OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ05hbWVDYWNoZS0+YWRkPFF1YWxpZmllZE5h
bWVDb21wb25lbnRzLCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yPihjb21wb25lbnRzKTsKKyAg
ICBtX2ltcGwgPSAqYWRkUmVzdWx0Lml0ZXI7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdLZXkp
CiAgICAgICAgIG1faW1wbC0+cmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0
U3RyaW5nLmNwcAppbmRleCAwMzVjNGEyMWE3MmM5Y2Q4NDBlMGIyOTYyY2U2OTc2YWQ4NTZiY2Jl
Li45ZTM2ZDUxMGRkOTZiZjQ3YzlhOGUxYTRmOWRjYjg2MjEzZmNkZDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgU3BhY2VTcGxp
dFN0cmluZ0RhdGE6On5TcGFjZVNwbGl0U3RyaW5nRGF0YSgpCiAKIFBhc3NSZWZQdHI8U3BhY2VT
cGxpdFN0cmluZ0RhdGE+IFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgU3BhY2VTcGxpdFN0cmluZ0RhdGEqJiBkYXRhID0gc2hh
cmVkRGF0YU1hcCgpLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU3BhY2VTcGxp
dFN0cmluZ0RhdGEqJiBkYXRhID0gc2hhcmVkRGF0YU1hcCgpLmFkZChzdHJpbmcsIDApLml0ZXIt
PnNlY29uZDsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgZGF0YSA9IG5ldyBTcGFjZVNwbGl0
U3RyaW5nRGF0YShzdHJpbmcpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTc2MWY1MDZlOTAxMDkxNzM2NDZjMWM5
MzdjNTEwNzYzYjFhYzI2My4uZDVjYjZkMWI1Zjg5Yjg2OWZhMzYzN2M4MmJjNDAyZjczMGQxNjhl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBA
IHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogCiAgICAgUHJlc2Vu
dGF0aW9uQXR0cmlidXRlQ2FjaGU6Oml0ZXJhdG9yIGNhY2hlSXRlcmF0b3I7CiAgICAgaWYgKGNh
Y2hlSGFzaCkgewotICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0cmlidXRl
Q2FjaGUoKS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5maXJzdDsKKyAgICAgICAgY2FjaGVJdGVy
YXRvciA9IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuYWRkKGNhY2hlSGFzaCwgbnVsbHB0
cikuaXRlcjsKICAgICAgICAgaWYgKGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJh
dG9yLT5zZWNvbmQtPmtleSAhPSBjYWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7
CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IGQx
MWZlZTEyMTgxNWM3Y2ZjN2M5OWQwMWNlNTQ1NTg3YmUzY2IxYjYuLjE1MWQ2YmE5ZmVhZTkxMzZi
YWM4ZWVhMmNlNDkwYWU0NjMwMzVkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCkBAIC0zNTksNyArMzU5LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxl
Y3Rpb246OnRhZ3MoY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjph
cHBlbmQoTm9kZUNhY2hlTWFwJiBtYXAsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50
KiBlbGVtZW50KQogewotICAgIE93blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1h
cC5hZGQoa2V5LmltcGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVj
dG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0
ZXItPnNlY29uZDsKICAgICBpZiAoIXZlY3RvcikKICAgICAgICAgdmVjdG9yID0gYWRvcHRQdHIo
bmV3IFZlY3RvcjxFbGVtZW50Kj4pOwogICAgIHZlY3Rvci0+YXBwZW5kKGVsZW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyNWRjYTMz
Y2U3MDQ4OGRiNWE4M2NkOWY5M2VkNWNkMWZhOGE5ZDY3Li5kNjU2ZDIzNWI5OWNkZjgwZDY3MWNj
ZTc0ZjM0ZjdmMzM5M2I1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcApAQCAtMjMzLDEyICsyMzMsMTIgQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZm
KGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3du
UHQKICAgICBEaWZmVGFibGUgb2xkVGFibGU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5ld0xpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9
IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0
OworICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9yIGl0ID0gbmV3VGFibGUuYWRkKG5ld0xpc3Rb
aV0tPm1fc2hhMSwgVmVjdG9yPHNpemVfdD4oKSkuaXRlcjsKICAgICAgICAgaXQtPnNlY29uZC5h
cHBlbmQoaSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvbGRMaXN0LnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBvbGRUYWJsZS5h
ZGQob2xkTGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAg
RGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ldLT5tX3NoYTEs
IFZlY3RvcjxzaXplX3Q+KCkpLml0ZXI7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggZGNhODFjYWNhYzZiMzg3ZGVlYTZmOTM5N2MwYWNlZTI0MmY2MDY2OS4uZDFhM2Jl
YjdlMjcwNjQ3ZTk3YzJhNDBiNzBmYTA2MTcwYWQ0NDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBp
bmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkK
ICAgICBkb3VibGUgbWF0Y2hUaW1lTXMgPSBXVEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVu
dE1hdGNoRGF0YS5zdGFydFRpbWU7CiAgICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNo
VGltZU1zOwogCi0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5n
U3RhdHMobV9jdXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAw
KSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kLnRvdGFsVGltZSArPSBtYXRjaFRpbWVNczsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQuaGl0cyArPSAxOworICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyht
X2N1cnJlbnRNYXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKyAg
ICBpZiAoIXJlc3VsdC5pc05ld0tleSkgeworICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kLnRv
dGFsVGltZSArPSBtYXRjaFRpbWVNczsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZC5oaXRz
ICs9IDE7CiAgICAgICAgIGlmIChtYXRjaGVkKQotICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5z
ZWNvbmQubWF0Y2hlcyArPSAxOworICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZC5tYXRj
aGVzICs9IDE7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCA3YzA3NTkxZGYwZTIyMWE1ZWRhMGI0OWJkNDk0NjIxODlh
OGU4M2VjLi43YjlmOWY5MzdkYmVlNTM3NmIxZDc5NGJjNDNmNjBhM2RhYTkzMmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTg3Niw3
ICs4NzYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgIH0KIAogICAgICpzZWFyY2hJ
ZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOwotICAgIFNlYXJjaFJl
c3VsdHM6Oml0ZXJhdG9yIHJlc3VsdHNJdCA9IG1fc2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElk
LCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4oKSkuZmlyc3Q7CisgICAgU2VhcmNoUmVzdWx0czo6aXRl
cmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2VhcmNoSWQsIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4gPigpKS5pdGVyOwogCiAgICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0
ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rv
ci5lbmQoKTsgKytpdCkKICAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBwZW5kKCppdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggNDY1ZjdkYmJhODliZjViNDJkNTYxM2E5NmVlM2EyNGE5NGRhZmQzOC4uYjdiMTk1
YmU3OWU2MzM5MTlmYjM5MTk3ODY5YWNkODAwOTMwYmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzMzLDcgKzMz
Myw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAKICAgICBCcmVha3BvaW50SWRUb0RlYnVn
U2VydmVyQnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRz
SXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmZpbmQo
YnJlYWtwb2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3Ig
PT0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5lbmQoKSkKLSAgICAg
ICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVi
dWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3RvcjxTdHJpbmc+KCkp
LmZpcnN0OworICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9IG1fYnJl
YWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFrcG9pbnRJZCwgVmVj
dG9yPFN0cmluZz4oKSkuaXRlcjsKICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRv
ci0+c2Vjb25kLmFwcGVuZChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZCk7CiAKICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oCmluZGV4IDcwN2MyNzZhZWFlNjllZjdmNTNmZTU4YjNiYTBmMWYzYjYy
ZDM2OGEuLjEzMWNjMDgwZjZhOGUwZDYzMGVlMDI2OTVjZThmZjc1YTk0MzcwYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTI4MSwyMSArMjgxLDIx
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZh
bHVlKS5zZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3S2V5KQog
ICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9y
T2JqZWN0OjpzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9kYXRhLnNl
dChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5p
c05ld0tleSkKICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lk
IEluc3BlY3Rvck9iamVjdDo6c2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmICht
X2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5zZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwg
dmFsdWUpLmlzTmV3S2V5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAppbmRleCBlNjIyOWM0NGQ1NDYwMGNmNTRhNmNiNTRjYTM2YmEzODIxZWRlMjA2
Li44MjBlMzFlN2Y1MGM4ZWI5N2U1MWY3ZTVhOGNjNmFlOTEyMTZiY2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcApAQCAtMTA2MiwxMCArMTA2MiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
YWRkRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIHR5cGUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgcGFpcjxFbnRyeU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1fcGVuZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7CisgICAgRW50cnlNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUpOwogICAgIAotICAg
IGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gdHlw
ZTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29u
ZCB8PSB0eXBlOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9j
dW1lbnRMb2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQXBwbGljYXRpb25D
YWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxNmE3Y2NmMmQzNWY2NGVkNGIw
ZTU3MzIxMGEzNjc1ODM1NzQ0ZGYxLi44YzcyZjZhOWFjNjQ1OTg2NTQwOTFmOGY5MGE0NDBlZjY4
MzBjNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEzNCwxMSArMTM0LDExIEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNh
Y2hlR3JvdXAoY29uc3QgS1VSCiB7CiAgICAgQVNTRVJUKCFtYW5pZmVzdFVSTC5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSk7CiAKLSAgICBzdGQ6OnBhaXI8Q2FjaGVHcm91cE1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0VVJMLCAwKTsKKyAg
ICBDYWNoZUdyb3VwTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZXNJbk1lbW9yeS5hZGQo
bWFuaWZlc3RVUkwsIDApOwogICAgIAotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAg
ICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXR1cm4gcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdC5pdGVyLT5zZWNvbmQpOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29u
ZDsKICAgICB9CiAKICAgICAvLyBMb29rIHVwIHRoZSBncm91cCBpbiB0aGUgZGF0YWJhc2UKQEAg
LTE1MCw3ICsxNTAsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogICAgICAgICBtX2NhY2hl
SG9zdFNldC5hZGQodXJsSG9zdEhhc2gobWFuaWZlc3RVUkwpKTsKICAgICB9CiAgICAgCi0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBncm91cDsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0g
Z3JvdXA7CiAgICAgCiAgICAgcmV0dXJuIGdyb3VwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGE3MWU4NTE1NDZmYzIwYWI4N2NhNzcyMDU1NjE3NGZjNjY2MmVlN2Mu
LjQyOGUzM2IyNWI2NjNlZThmNDI4NTRlZjhhNGM5OGYyODIyMGY5Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM1MTYsNyArMzUxNiw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAg
ICAgICAgIC8vIEVuc3VyZSB0aGlzIHRhcmdldCdzIHRvdWNoIGxpc3QgZXhpc3RzLCBldmVuIGlm
IGl0IGVuZHMgdXAgZW1wdHksIHNvIGl0IGNhbiBhbHdheXMgYmUgcGFzc2VkIHRvIFRvdWNoRXZl
bnQ6OkNyZWF0ZSBiZWxvdy4KICAgICAgICAgVGFyZ2V0VG91Y2hlc01hcDo6aXRlcmF0b3IgdGFy
Z2V0VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LmZpbmQodG91Y2hUYXJnZXQuZ2V0
KCkpOwogICAgICAgICBpZiAodGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID09IHRvdWNoZXNCeVRhcmdl
dC5lbmQoKSkKLSAgICAgICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRh
cmdldC5zZXQodG91Y2hUYXJnZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLmZpcnN0Owor
ICAgICAgICAgICAgdGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0
b3VjaFRhcmdldC5nZXQoKSwgVG91Y2hMaXN0OjpjcmVhdGUoKSkuaXRlcjsKIAogICAgICAgICAv
LyB0b3VjaGVzIGFuZCB0YXJnZXRUb3VjaGVzIHNob3VsZCBvbmx5IGNvbnRhaW4gaW5mb3JtYXRp
b24gYWJvdXQgdG91Y2hlcyBzdGlsbCBvbiB0aGUgc2NyZWVuLCBzbyBpZiB0aGlzIHBvaW50IGlz
CiAgICAgICAgIC8vIHJlbGVhc2VkIG9yIGNhbmNlbGxlZCBpdCB3aWxsIG9ubHkgYXBwZWFyIGlu
IHRoZSBjaGFuZ2VkVG91Y2hlcyBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4
IDczMWUxZmMwNzliNWZlOWZiMzkwMGZiNTdiZjM2ZTFkOTY2YThmYjIuLjFmZTQ3Njk5ODUwMzNl
ZDM5OTU3NTM5YmJjNTg4N2UwZjNlMDZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAK
QEAgLTkwLDE1ICs5MCwxNSBAQCBQYWdlR3JvdXAqIFBhZ2VHcm91cDo6cGFnZUdyb3VwKGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lKQogICAgIGlmICghcGFnZUdyb3VwcykKICAgICAgICAgcGFnZUdy
b3VwcyA9IG5ldyBQYWdlR3JvdXBNYXA7CiAKLSAgICBwYWlyPFBhZ2VHcm91cE1hcDo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IHBhZ2VHcm91cHMtPmFkZChncm91cE5hbWUsIDApOworICAgIFBh
Z2VHcm91cE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHBhZ2VHcm91cHMtPmFkZChncm91cE5hbWUs
IDApOwogCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQu
Zmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IFBhZ2VH
cm91cChncm91cE5hbWUpOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNT
RVJUKCFyZXN1bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9
IG5ldyBQYWdlR3JvdXAoZ3JvdXBOYW1lKTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0LmZp
cnN0LT5zZWNvbmQpOwotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBBU1NF
UlQocmVzdWx0Lml0ZXItPnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQ7
CiB9CiAKIHZvaWQgUGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSgpCkBAIC0xOTcsNyArMTk3
LDcgQEAgaW5saW5lIHZvaWQgUGFnZUdyb3VwOjphZGRWaXNpdGVkTGluayhMaW5rSGFzaCBoYXNo
KQogewogICAgIEFTU0VSVChzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk7CiAjaWYgIVBMQVRGT1JN
KENIUk9NSVVNKQotICAgIGlmICghbV92aXNpdGVkTGlua0hhc2hlcy5hZGQoaGFzaCkuc2Vjb25k
KQorICAgIGlmICghbV92aXNpdGVkTGlua0hhc2hlcy5hZGQoaGFzaCkuaXNOZXdLZXkpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogICAgIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQodGhpcywg
aGFzaCk7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRU
b1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmMKICAgICBP
d25QdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2VyU2NyaXB0KHNv
dXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRG
cmFtZXMpKTsKICAgICBpZiAoIW1fdXNlclNjcmlwdHMpCiAgICAgICAgIG1fdXNlclNjcmlwdHMg
PSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdE1hcCk7Ci0gICAgT3duUHRyPFVzZXJTY3JpcHRWZWN0
b3I+JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVsbHB0ciku
Zmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNjcmlwdHNJbldv
cmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAg
ICAgaWYgKCFzY3JpcHRzSW5Xb3JsZCkKICAgICAgICAgc2NyaXB0c0luV29ybGQgPSBhZG9wdFB0
cihuZXcgVXNlclNjcmlwdFZlY3Rvcik7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZCh1c2Vy
U2NyaXB0LnJlbGVhc2UoKSk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFk
ZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJp
bmcmIHMKICAgICBPd25QdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gYWRvcHRQ
dHIobmV3IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwg
aW5qZWN0ZWRGcmFtZXMsIGxldmVsKSk7CiAgICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cykKICAg
ICAgICAgbV91c2VyU3R5bGVTaGVldHMgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hlZXRNYXAp
OwotICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9
IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91
c2VyU3R5bGVTaGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlm
ICghc3R5bGVTaGVldHNJbldvcmxkKQogICAgICAgICBzdHlsZVNoZWV0c0luV29ybGQgPSBhZG9w
dFB0cihuZXcgVXNlclN0eWxlU2hlZXRWZWN0b3IpOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+
YXBwZW5kKHVzZXJTdHlsZVNoZWV0LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwCmluZGV4IDkzMWYyNjAzZmQ0ZjIyMWI0YjVkZTNhY2RjMzdkOTc2ZDEzZGYy
MjcuLjg5MWI1ODVhNDc0MWIxMWI1YWY0ZTE3MGY4MWQ2MzE0MzQ5MWY3NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xMzEsMTEgKzEzMSwxMSBAQCB2b2lkIFNl
Y3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0
eU9yaWdpbiYgc291cmNlTwogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgc291cmNlU3Ry
aW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFpcjxPcmlnaW5BY2Nlc3NNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3Ry
aW5nLCBudWxscHRyKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKKyAgICBP
cmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQo
c291cmNlU3RyaW5nLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KQorICAgICAg
ICByZXN1bHQuaXRlci0+c2Vjb25kID0gYWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCk7CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuZmlyc3QtPnNl
Y29uZC5nZXQoKTsKKyAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRl
ci0+c2Vjb25kLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNz
RW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNo
QWRqdXN0bWVudC5jcHAKaW5kZXggZGQwNTQ2MThkMGY4MGE4MDI2MjY4NWQ4YjBmNGE5OTdiYjEz
YjUzOC4uOGE5OWJmZmYwZmJhODhhM2FiNzVlNDgzZDg2ZTMzYTg3YzhmZTVmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQg
Y29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1
YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNp
dGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNv
bGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQg
bGF0ZXIuCiAgICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5w
YXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2Rl
LT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFpcjxIYXNoU2V0
PE5vZGUqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVy
c1NldC5hZGQodmlzaXRlZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3Vs
dC5zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgIEhhc2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJzU2V0LmFkZCh2aXNpdGVkTm9kZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5KQogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVy
dHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlz
dC5jcHAKaW5kZXggNGI4MjNiMTJiNzhiNjVkY2M3NWJjMTExNzYyNjgxNDA2NmYyODVmOS4uOTZl
NmViMWFkMDQ5YjZiZTNlZjdlOWU0YmUyMTUwMDMxMmUxYTljMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCkBAIC0yMjQsMTIgKzIy
NCwxMiBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5KGNv
bnN0IGludCogaW50ZWdlcnMsIHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCBzYXZlZEFnZ3Jl
Z2F0ZVNpemUgPSArK21fY3VycmVudEFnZ3JlZ2F0ZVNpemU7CiAgICAgQVNTRVJUKHNpemUpOwot
ICAgIHBhaXI8SW50ZWdlckFycmF5TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9p
bnRlZ2VyQXJyYXlzLmFkZChJbnRlZ2VyQXJyYXkoaW50ZWdlcnMsIHNpemUpLCAwKTsKLSAgICBp
ZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgSW50ZWdlckFycmF5TWFwOjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gbV9pbnRlZ2VyQXJyYXlzLmFkZChJbnRlZ2VyQXJyYXkoaW50ZWdlcnMsIHNpemUp
LCAwKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0tleSkKICAgICAgICAgcmV0dXJuOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3cml0ZUludGVnZXIo
aW50ZWdlcnNbaV0pOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbV9jdXJyZW50T2Jq
ZWN0UmVmZXJlbmNlKys7CisgICAgYWRkUmVzdWx0Lml0ZXItPnNlY29uZCA9IG1fY3VycmVudE9i
amVjdFJlZmVyZW5jZSsrOwogICAgIHdyaXRlQXJyYXlPYmplY3Qoc2l6ZSk7CiAgICAgbV9jdXJy
ZW50QWdncmVnYXRlU2l6ZSA9IHNhdmVkQWdncmVnYXRlU2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIu
Y3BwCmluZGV4IDFiNWE3MzE5ZTQyZDlkZjE0YmQyNTk1MTEzMTkxNjJlODcxNWMxNzUuLmJkZjcw
MzMzMzM1NDJjNTJkZjUyMTYwMjRjNDllOTc3YTkxMDExNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNw
cApAQCAtNDI4LDE4ICs0MjgsMTggQEAgdm9pZCBMYXllclRpbGVyOjpwcm9jZXNzVGV4dHVyZUpv
Yihjb25zdCBUZXh0dXJlSm9iJiBqb2IsIFRpbGVKb2JzTWFwJiB0aWxlSm9ic00KIHZvaWQgTGF5
ZXJUaWxlcjo6YWRkVGlsZUpvYihjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBjb25zdCBUZXh0dXJl
Sm9iJiBqb2IsIFRpbGVKb2JzTWFwJiB0aWxlSm9ic01hcCkKIHsKICAgICAvLyBIYXNoTWFwOjph
ZGQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpdGVyYXRvciBldmVuIHRoZSBrZXkgYWxyZWFkeSBl
eGlzdHMuCi0gICAgcGFpcjxUaWxlSm9ic01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHRp
bGVKb2JzTWFwLmFkZChpbmRleCwgJmpvYik7CisgICAgVGlsZUpvYnNNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSB0aWxlSm9ic01hcC5hZGQoaW5kZXgsICZqb2IpOwogCiAgICAgLy8gU3VjY2Vzc2Z1
bGx5IGFkZGVkIHRoZSBuZXcgam9iLgotICAgIGlmIChyZXN1bHQuc2Vjb25kKQorICAgIGlmIChy
ZXN1bHQuaXNOZXdLZXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEluIHRoaXMgY2FzZSB3
ZSBsZWF2ZSB0aGUgcHJldmlvdXMgam9iLgotICAgIGlmIChqb2IubV90eXBlID09IFRleHR1cmVK
b2I6OkRpcnR5Q29udGVudHMgJiYgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPm1fdHlwZSA9PSBUZXh0
dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAgaWYgKGpvYi5tX3R5cGUgPT0gVGV4dHVyZUpv
Yjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRlci0+c2Vjb25kLT5tX3R5cGUgPT0gVGV4dHVy
ZUpvYjo6RGlzY2FyZENvbnRlbnRzKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPdmVycmlk
ZSB0aGUgcHJldmlvdXMgam9iLgotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gJmpvYjsKKyAg
ICByZXN1bHQuaXRlci0+c2Vjb25kID0gJmpvYjsKIH0KIAogdm9pZCBMYXllclRpbGVyOjpwZXJm
b3JtVGlsZUpvYihMYXllclRpbGUqIHRpbGUsIGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgY29uc3Qg
SW50UmVjdCYgdGlsZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBmNmNjYjk1ZDdlNzEwYTNjMTNm
NjFmMjIwMzY3ODBlYmViNjc3NWIzLi43NzRjOTNiYmViZGRmYTVjMzlmNjYwNTNkNWUwYTMzN2U3
MGJiMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0ODgsMTYgKzI0ODgsMTYgQEAgUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25l
SUQgY2xvbmVJRCwgUGwKICAgICAvLyBBZGQgd2l0aCBhIGR1bW15IHZhbHVlIHRvIGdldCBhbiBp
dGVyYXRvciBmb3IgdGhlIGluc2VydGlvbiBwb3NpdGlvbiwgYW5kIGEgYm9vbGVhbiB0aGF0IHRl
bGxzCiAgICAgLy8gdXMgd2hldGhlciB0aGVyZSdzIGFuIGl0ZW0gdGhlcmUuIFRoaXMgdGVjaG5p
cXVlIGF2b2lkcyB0d28gaGFzaCBsb29rdXBzLgogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
IGR1bW15OwotICAgIHBhaXI8TGF5ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBj
bG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKSB7
CisgICAgTGF5ZXJNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlE
LCBkdW1teSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgLy8gVmFs
dWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCi0gICAgICAgIHJlc3VsdExh
eWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIHJlc3VsdExheWVy
ID0gYWRkUmVzdWx0Lml0ZXItPnNlY29uZC5nZXQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBy
ZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291cmNlTGF5ZXIsIGNsb25lTGV2ZWwpOwogI2lmbmRl
ZiBOREVCVUcKICAgICAgICAgcmVzdWx0TGF5ZXItPnNldE5hbWUoU3RyaW5nOjpmb3JtYXQoIkNs
b25lICVkIG9mIGxheWVyICVwIiwgY2xvbmVJRFswVV0sIHNvdXJjZUxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpKTsKICNlbmRpZgotICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3Vs
dExheWVyOworICAgICAgICBhZGRSZXN1bHQuaXRlci0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21p
dW1XaW4uY3BwCmluZGV4IDcxMWI4OTZhYzYxMjg4MzYyZWQ3MmVkZjcyYTQ3MDkyZmU3MjI0YmUu
LjU0NDkzODY2YjliNjk0YjdiNDVkMmEwZDQxYmYzZWM2N2Y1MDE1OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVt
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250VXRpbHNDaHJvbWl1bVdpbi5jcHAKQEAgLTQxNCw4ICs0MTQsOCBAQCBib29sIGdldERlcml2
ZWRGb250RGF0YShjb25zdCBVQ2hhciogZmFtaWx5LAogICAgICAgICAvLyBhIGZvbnQgZXZlbiBp
ZiB0aGVyZSdzIG5vIGZvbnQgbWF0Y2hpbmcgdGhlIG5hbWUuIE5lZWQgdG8KICAgICAgICAgLy8g
Y2hlY2sgaXQgYWdhaW5zdCB3aGF0IHdlIGFjdHVhbGx5IHdhbnQgKGFzIGlzIGRvbmUgaW4KICAg
ICAgICAgLy8gRm9udENhY2hlV2luLmNwcCkKLSAgICAgICAgcGFpcjxGb250RGF0YUNhY2hlOjpp
dGVyYXRvciwgYm9vbD4gZW50cnkgPSBmb250RGF0YUNhY2hlLmFkZChmb250S2V5LCBGb250RGF0
YSgpKTsKLSAgICAgICAgZGVyaXZlZCA9ICZlbnRyeS5maXJzdC0+c2Vjb25kOworICAgICAgICBG
b250RGF0YUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBmb250RGF0YUNhY2hlLmFkZChmb250S2V5
LCBGb250RGF0YSgpKTsKKyAgICAgICAgZGVyaXZlZCA9ICZlbnRyeS5pdGVyLT5zZWNvbmQ7CiAg
ICAgICAgIGRlcml2ZWQtPmhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KGxvZ2ZvbnQpOwogICAg
ICAgICAvLyBHZXRBc2NlbnQgbWF5IHJldHVybiBrVW5kZWZpbmVkQXNjZW50LCBidXQgd2Ugc3Rp
bGwgd2FudCB0bwogICAgICAgICAvLyBjYWNoZSBpdCBzbyB0aGF0IHdlIHdvbid0IGhhdmUgdG8g
Y2FsbCBDcmVhdGVGb250SW5kaXJlY3Qgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDM3MmEwZTA4ZThmM2IyN2M3NDVlYjQ1YjE1
MjM1Mzk0ZTcyMDI2Y2IuLjZiNmM1ZjNjZjk4ZjE2YzM5OWUwMzFlYTYxZTJiNGUyNjVjMWMxNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdQogICAgICAgICAgICAg
Ly8gb2YgYmxvY2tlZCBwcm9wZXJ0aWVzLgogICAgICAgICAgICAgYm9vbCBudWxsSW50ZXJzZWN0
aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoVGFyZ2V0UHJvcGVydGllczo6aXRlcmF0b3Ig
cEl0ZXIgPSBlbnF1ZXVlZFByb3BlcnRpZXMuYmVnaW4oKTsgcEl0ZXIgIT0gZW5xdWV1ZWRQcm9w
ZXJ0aWVzLmVuZCgpOyArK3BJdGVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9ja2VkUHJv
cGVydGllcy5hZGQoKnBJdGVyKS5zZWNvbmQpCisgICAgICAgICAgICAgICAgaWYgKCFibG9ja2Vk
UHJvcGVydGllcy5hZGQoKnBJdGVyKS5pc05ld0tleSkKICAgICAgICAgICAgICAgICAgICAgbnVs
bEludGVyc2VjdGlvbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQVRT
VUkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckFUU1VJLmNwcAppbmRleCAwNDM3YmNkZmMwOWI5NjdkYTdmZTE5NmYyN2JmMmUw
ZTcxMjJlZDk5Li5iZDg0Y2RmNzBkOWM5ODQ1ZjI3MjM4YjYxMGRkZTM3OTE0YzlkMzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQVRTVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAKQEAgLTI3OCwxNSArMjc4LDE1IEBA
IHN0YXRpYyB2b2lkIGRpc2FibGVMaWdhdHVyZXMoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRE
YXRhLCBBVFNVU3R5bGUgYXRzdVN0eWxlCiBzdGF0aWMgQVRTVVN0eWxlIGluaXRpYWxpemVBVFNV
U3R5bGUoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBUeXBlc2V0dGluZ0ZlYXR1cmVz
IHR5cGVzZXR0aW5nRmVhdHVyZXMpCiB7CiAgICAgdW5zaWduZWQga2V5ID0gdHlwZXNldHRpbmdG
ZWF0dXJlcyArIDE7Ci0gICAgcGFpcjxIYXNoTWFwPHVuc2lnbmVkLCBBVFNVU3R5bGU+OjppdGVy
YXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLmFkZChrZXks
IDApOwotICAgIEFUU1VTdHlsZSYgYXRzdVN0eWxlID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7
Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEhhc2hNYXA8dW5zaWduZWQsIEFUU1VT
dHlsZT46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRk
KGtleSwgMCk7CisgICAgQVRTVVN0eWxlJiBhdHN1U3R5bGUgPSBhZGRSZXN1bHQuaXRlci0+c2Vj
b25kOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5KQogICAgICAgICByZXR1cm4gYXRzdVN0
eWxlOwogCiAgICAgQVRTVUZvbnRJRCBmb250SUQgPSBmb250RGF0YS0+cGxhdGZvcm1EYXRhKCku
Y3RGb250KCkgPyBDVEZvbnRHZXRQbGF0Zm9ybUZvbnQoZm9udERhdGEtPnBsYXRmb3JtRGF0YSgp
LmN0Rm9udCgpLCAwKSA6IDA7CiAgICAgaWYgKCFmb250SUQpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJ1bmFibGUgdG8gZ2V0IEFUU1VGb250SUQgZm9yICVwIiwgZm9udERhdGEtPnBsYXRmb3JtRGF0
YSgpLmZvbnQoKSk7Ci0gICAgICAgIGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5yZW1vdmUoYWRk
UmVzdWx0LmZpcnN0KTsKKyAgICAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLnJlbW92ZShh
ZGRSZXN1bHQuaXNOZXdLZXkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVG
b250RGF0YUNvcmVUZXh0LmNwcAppbmRleCA4MzJiYjlkZGY4ZGExMjk4ZmQzOTMyNTYyODRkMDRl
NjM1OGYyNDI2Li4wZDRlOWEzZjA5YzhlNDc0YzM3MDEzOGI0OWYxM2IxNGRmYTEwOGQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERh
dGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCkBAIC00Miw5ICs0Miw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIENGRGljdGlvbmFyeVJlZiBTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRy
aWJ1dGVzKFR5cGVzZXR0aW5nRmVhdHVyZXMgdHlwZXNldHRpbmdGZWF0dXJlcywgRm9udE9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdAogewogICAgIHVuc2lnbmVkIGtleSA9IHR5cGVzZXR0
aW5nRmVhdHVyZXMgKyAxOwotICAgIHBhaXI8SGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdB
dHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+KCkpOwotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGFkZFJlc3Vs
dC5maXJzdC0+c2Vjb25kOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICBIYXNoTWFw
PHVuc2lnbmVkLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+OjpBZGRSZXN1bHQgYWRkUmVz
dWx0ID0gbV9DRlN0cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4oKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGF0dHJpYnV0ZXNEaWN0
aW9uYXJ5ID0gYWRkUmVzdWx0Lml0ZXItPnNlY29uZDsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0tleSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpOwogICAgIAog
ICAgIGJvb2wgdHJlYXRMaW5lQXNWZXJ0aWNhbCA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBs
YXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9G
b250UGxhdGZvcm1EYXRhLmNwcAppbmRleCA2OTJmZDZkMGQxZjFkYjgxYWQyOTcyYTNmMzM0Mzdi
ZWY2ZmU2MzVkLi5lN2Y4ZmRlNTcwOGZhZjQyZmRiMzBiNmU3NWVhNzk4YmE4ZGM5MmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9G
b250UGxhdGZvcm1EYXRhLmNwcApAQCAtMjg1LDExICsyODUsMTEgQEAgUGFzc1JlZlB0cjxGaXhl
ZFNpemVGb250RGF0YT4gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIGZhbWkKIHN0YXRpYyBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPiBjcmVhdGVGaXhl
ZFNpemVGb250RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgdW5zaWduZWQgd2VpZ2h0
LCBib29sIGl0YWxpYykKIHsKICAgICBGaXhlZFNpemVGb250RGF0YUtleSBrZXkoZmFtaWx5LCB3
ZWlnaHQsIGl0YWxpYyk7Ci0gICAgcGFpcjxGaXhlZFNpemVGb250Q2FjaGU6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBnX2ZpeGVkU2l6ZUZvbnRDYWNoZS5hZGQoa2V5LCBSZWZQdHI8Rml4ZWRT
aXplRm9udERhdGE+KCkpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCA9IEZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUoZmFtaWx5LCB3ZWlnaHQs
IGl0YWxpYyk7CisgICAgRml4ZWRTaXplRm9udENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZ19m
aXhlZFNpemVGb250Q2FjaGUuYWRkKGtleSwgUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPigpKTsK
KyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0g
Rml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdlaWdodCwgaXRhbGljKTsKIAotICAg
IHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNl
Y29uZDsKIH0KIAogc3RhdGljIExPTkcgdG9HRElGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdl
aWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5j
cHAKaW5kZXggYTY2OWJjOGVmODUyM2Q0ODY2ZjFlYjgwYTI1MTIzMzAyYWQ0YzQ1Yi4uNTc0NzI2
NzcyNjJhOWMzYWY2ZTA5YzAwNWRkMWFkMjBmYzExZGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgc3Rh
dGljIFN0eWxlQ29udGV4dE1hcCYgc3R5bGVDb250ZXh0TWFwKCkKIAogc3RhdGljIEd0a1N0eWxl
Q29udGV4dCogZ2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiB7Ci0gICAgc3RkOjpw
YWlyPFN0eWxlQ29udGV4dE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0eWxlQ29udGV4
dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBTdHlsZUNvbnRleHRN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzdHlsZUNvbnRleHRNYXAoKS5hZGQod2lkZ2V0VHlwZSwg
MCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIHJldHVybiByZXN1bHQuaXRl
ci0+c2Vjb25kLmdldCgpOwogCiAgICAgR3RrV2lkZ2V0UGF0aCogcGF0aCA9IGd0a193aWRnZXRf
cGF0aF9uZXcoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfYXBwZW5kX3R5cGUocGF0aCwgd2lkZ2V0
VHlwZSk7CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIEd0a1N0eWxlQ29udGV4dCogZ2V0U3R5
bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3Bh
dGgoY29udGV4dC5nZXQoKSwgcGF0aCk7CiAgICAgZ3RrX3dpZGdldF9wYXRoX2ZyZWUocGF0aCk7
CiAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGNvbnRleHQ7CisgICAgcmVzdWx0Lml0ZXIt
PnNlY29uZCA9IGNvbnRleHQ7CiAgICAgcmV0dXJuIGNvbnRleHQuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4
IDQ0YzU2ODFmYmJkNTM0OGIyMDE0OTM1MWZhMzY4MzJkNzk1ODI2MjguLjUwMDkxZTE5ZDNhZjU2
ZmY0YThkZjE3NWJmODk3ODcwMDc2MTQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcg
SFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6Z2V0
KG5hbWUpOwogfQogCi1wYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBIVFRQSGVh
ZGVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQorSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZChuYW1lLCB2YWx1
ZSk7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBIVFRQSGVhZGVyTWFwOjpjb250YWlucyhj
b25zdCBjaGFyKiBuYW1lKSBjb25zdAogICAgIHJldHVybiBmaW5kPGNvbnN0IGNoYXIqLCBDYXNl
Rm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yPihuYW1lKSAhPSBlbmQoKTsKIH0KIAotcGFpcjxIVFRQ
SGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgSFRU
UEhlYWRlck1hcDo6YWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
CiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFz
aD46OmFkZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRvcj4obmFtZSwg
dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFk
ZXJNYXAuaAppbmRleCAwMjA3MWUzNjEwYzFkNGI0ZmNkZjRkNmM5NTliNDlmODdmM2E1ZjE1Li4x
MmJkZTA2ODk3ZTdjZTNmM2VjOTAxMmUxYzM3ZmRmZmU4ZDg5YzJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNTEsMTIgKzUxLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBnZXQoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
KyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogCiAgICAgICAgIC8vIEFsdGVybmF0ZSBhY2Nlc3NvcnMgdGhhdCBhcmUg
ZmFzdGVyIHRoYW4gY29udmVydGluZyB0aGUgY2hhciogdG8gQXRvbWljU3RyaW5nIGZpcnN0Lgog
ICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKICAgICAgICAgU3RyaW5n
IGdldChjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFk
ZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAgQWRkUmVz
dWx0IGFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICAgICAg
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggNDNhNjRlOTcwNzI0MDQwNDIyN2RjYjBkNWUy
NTZkMzc0Yjg3MzU5YS4uZmVmODc4MzU2YTVjZmUxMGE5NzgzN2ZlNjU3YmMzOTZiNjIxZmQ3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCkBAIC0zNzEsOSArMzcxLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7Ci0gICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9o
dHRwSGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7IAotICAgIGlmICghcmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7CisgICAgSFRU
UEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxkcy5hZGQobmFt
ZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXN1bHQuaXRl
ci0+c2Vjb25kICs9ICIsIiArIHZhbHVlOwogCiAgICAgaWYgKHVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDNlNTk4YmFiNmI5
YTg1MGE1YTZjYzkyOGMwMDY5YzA4OTNhODEwOWUuLjExYTU3NDVkZGZjZTRjOWVmY2ExMmQ2MGY3
NmRlMjhhMmY0NWFlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6YWRkKFBhc3NSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcHJwUGFja2FnZSkKIAogICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdl
PiBwYWNrYWdlID0gcHJwUGFja2FnZTsKIAotICAgIGlmICghbV9wbHVnaW5zLmFkZChwYWNrYWdl
KS5zZWNvbmQpCisgICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3S2V5KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3BsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBh
dGgoKSwgcGFja2FnZSk7CkBAIC01NzQsNyArNTc0LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6
bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKIAogICAgICAgICBSZWZQdHI8UGx1Z2luUGFj
a2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2VGcm9tQ2FjaGUocGF0
aCwgbGFzdE1vZGlmaWVkLCBuYW1lLCBkZXNjLCBtaW1lRGVzYyk7CiAKLSAgICAgICAgaWYgKHBh
Y2thZ2UgJiYgY2FjaGVkUGx1Z2lucy5hZGQocGFja2FnZSkuc2Vjb25kKSB7CisgICAgICAgIGlm
IChwYWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3S2V5KSB7CiAgICAg
ICAgICAgICBjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcy5hZGQocGFja2FnZS0+cGF0aCgpLCBw
YWNrYWdlLT5sYXN0TW9kaWZpZWQoKSk7CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5zQnlQYXRo
LmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggMjcxMjFjNjY0
ZTNjNmI2YmM2YjVkNmVkZGJiYWJiY2Y3MmI3NjllZC4uNTU2MDI1NzY4M2Y4OWI0MTBiNTk4NmIx
MWU4YjVmOTlhNjRhNjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4v
UGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1Bs
dWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBj
b25zdAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBTdHJpbmcgZnVs
bFBhdGggPSAqaXQgKyAiXFwiICsgZmlsZW5hbWU7Ci0gICAgICAgICAgICBpZiAoIXVuaXF1ZUZp
bGVuYW1lcy5hZGQoZnVsbFBhdGgpLnNlY29uZCkKKyAgICAgICAgICAgIGlmICghdW5pcXVlRmls
ZW5hbWVzLmFkZChmdWxsUGF0aCkuaXNOZXdLZXkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIHBhdGhzLmFkZChmdWxsUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBkNDZkNWI5NDM0MzU3NmI2ZGQwOTMwNDMxMTA1YzYw
MTk4OTdhZTdhLi40ZTIyYmNkN2IxMTdkY2ZhYmQyZWQwNTNlOTk0ZGQzOTdiMWU2Njg4IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM4MzMsNyArMzgzMyw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KFJlbmRlckJv
eCogZGVzY2VuZGFudCkKICAgICAgICAgZGVzY2VuZGFudFNldCA9IG5ldyBIYXNoU2V0PFJlbmRl
ckJveCo+OwogICAgICAgICBnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwLT5zZXQodGhpcywg
ZGVzY2VuZGFudFNldCk7CiAgICAgfQotICAgIGJvb2wgYWRkZWQgPSBkZXNjZW5kYW50U2V0LT5h
ZGQoZGVzY2VuZGFudCkuc2Vjb25kOworICAgIGJvb2wgYWRkZWQgPSBkZXNjZW5kYW50U2V0LT5h
ZGQoZGVzY2VuZGFudCkuaXNOZXdLZXk7CiAgICAgaWYgKCFhZGRlZCkgewogICAgICAgICBBU1NF
UlQoZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmdldChkZXNjZW5kYW50KSk7CiAgICAgICAg
IEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+Z2V0KGRlc2NlbmRhbnQpLT5jb250
YWlucyh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCmluZGV4IGIyNTQzN2M1NWMxZmM0NjZmYzdhMTE5NjcyNDlmYmExNzhi
NTU0MDcuLjRlYWQ4OGQ2YTAyYWEwZjA2Y2MwYmZhNDczNTI3NmNlZTQ4N2MyMTggMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBA
IC02NjIsMTQgKzY2MiwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9y
VGV4dFJ1bihSb290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBydQogICAgIHJ1bi0+bV9i
b3gtPnNldExvZ2ljYWxXaWR0aChyZW5kZXJlci0+d2lkdGgocnVuLT5tX3N0YXJ0LCBydW4tPm1f
c3RvcCAtIHJ1bi0+bV9zdGFydCwgeFBvcywgbGluZUluZm8uaXNGaXJzdExpbmUoKSwgJmZhbGxi
YWNrRm9udHMsICZnbHlwaE92ZXJmbG93KSArIGh5cGhlbldpZHRoKTsKICAgICBpZiAoIWZhbGxi
YWNrRm9udHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPm1fYm94LT5pc1RleHQo
KSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBp
dCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5tX2JveCksIG1ha2Vf
cGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5m
aXJzdDsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9y
IGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFr
ZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkp
Lml0ZXI7CiAgICAgICAgIEFTU0VSVChpdC0+c2Vjb25kLmZpcnN0LmlzRW1wdHkoKSk7CiAgICAg
ICAgIGNvcHlUb1ZlY3RvcihmYWxsYmFja0ZvbnRzLCBpdC0+c2Vjb25kLmZpcnN0KTsKICAgICAg
ICAgcnVuLT5tX2JveC0+cGFyZW50KCktPmNsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWln
aHRBbmRCYXNlbGluZSgpOwogICAgIH0KICAgICBpZiAoKGdseXBoT3ZlcmZsb3cudG9wIHx8IGds
eXBoT3ZlcmZsb3cuYm90dG9tIHx8IGdseXBoT3ZlcmZsb3cubGVmdCB8fCBnbHlwaE92ZXJmbG93
LnJpZ2h0KSkgewogICAgICAgICBBU1NFUlQocnVuLT5tX2JveC0+aXNUZXh0KCkpOwotICAgICAg
ICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94
RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9y
PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuZmlyc3Q7CisgICAg
ICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRC
b3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0
b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5pdGVyOwogICAg
ICAgICBpdC0+c2Vjb25kLnNlY29uZCA9IGdseXBoT3ZlcmZsb3c7CiAgICAgICAgIHJ1bi0+bV9i
b3gtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDFjODkyYzg4ZWMyMzQwZTNm
YjkzZWNhZGYxMmI5NTg0NzFhODYwMDQuLjBkZjAyYWY5YTA4YTNkZWRmNjU1Yzk4Y2JkZDU1N2Yy
YWEwYzc2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5jcHAKQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNoZWNrSW52
YWxpZFJlZ2lvbnMoKQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZs
b3dUaHJlYWQoUmVuZGVyRmxvd1RocmVhZCogb3RoZXJGbG93VGhyZWFkKQogewotICAgIHN0ZDo6
cGFpcjxSZW5kZXJGbG93VGhyZWFkQ291bnRlZFNldDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5hZGQob3RoZXJGbG93VGhyZWFkKTsKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkgeworICAgIFJlbmRlckZsb3dUaHJlYWRDb3VudGVkU2V0OjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJlYWQp
OworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmly
c3QgdGltZSB3ZSBzZWUgdGhpcyBkZXBlbmRlbmN5LiBNYWtlIHN1cmUgd2UgcmVjYWxjdWxhdGUg
YWxsIHRoZSBkZXBlbmRlbmNpZXMuCiAgICAgICAgIHZpZXcoKS0+c2V0SXNSZW5kZXJGbG93VGhy
ZWFkT3JkZXJEaXJ0eSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCmluZGV4IGFmMjY4NzUwMGU5YzZhMWQ1YjdlYzJhMTgxNzhlOGFiM2JmOWYw
Y2IuLjU1YjU3YjdjM2UwYWNiZGY2YWFhMDgxY2FkM2EwODg3OTU0MzdlNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgUmVu
ZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNv
bnN0IFJlbmRlckJveCogYm94LAogICAgIGlmICghbV9pc1ZhbGlkIHx8ICFtX2Zsb3dUaHJlYWQp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBi
b3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25JbmZvLmFkZChib3gsIG51bGxwdHIpLmZpcnN0LT5z
ZWNvbmQ7CisgICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5k
ZXJCb3hSZWdpb25JbmZvLmFkZChib3gsIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBpZiAo
Ym94SW5mbykKICAgICAgICAgKmJveEluZm8gPSBSZW5kZXJCb3hSZWdpb25JbmZvKGxvZ2ljYWxM
ZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQp
OwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDkwN2ZlMTY3N2IxNzA0ODJjNmY0
YWM1N2VkOTcxZDU3MjE5MWFlNDEuLmJhMDY4OWNiZTliNTg1MzQ2YTRhMWFiNmIwOTJlNDllMjZm
OThmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVj
dCwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8R3JhZGllbnREYXRh
PiYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJz
dC0+c2Vjb25kOworICAgIE93blB0cjxHcmFkaWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dy
YWRpZW50TWFwLmFkZChvYmplY3QsIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBpZiAoIWdy
YWRpZW50RGF0YSkKICAgICAgICAgZ3JhZGllbnREYXRhID0gYWRvcHRQdHIobmV3IEdyYWRpZW50
RGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBiZWMwZjMzNzRmNDY0MzYyYTlhNTgzZWFm
MTk4MzUwMjgxYjhkMDJjLi4wYjRiYjRmOTQ4MmM2YTJkMmIwODhhYWE4MTk4MTM4ZTUzMTQ5N2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJT
dHlsZSoKICAgICBpZiAobV9hdHRyaWJ1dGVzLnBhdHRlcm5Vbml0cygpID09IFNWR1VuaXRUeXBl
czo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAmJiBvYmplY3RCb3VuZGluZ0JveC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE93blB0cjxQYXR0ZXJuRGF0
YT4mIHBhdHRlcm5EYXRhID0gbV9wYXR0ZXJuTWFwLmFkZChvYmplY3QsIG51bGxwdHIpLmZpcnN0
LT5zZWNvbmQ7CisgICAgT3duUHRyPFBhdHRlcm5EYXRhPiYgcGF0dGVybkRhdGEgPSBtX3BhdHRl
cm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlmICghcGF0dGVy
bkRhdGEpCiAgICAgICAgIHBhdHRlcm5EYXRhID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EYXRhKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKaW5kZXggNDhkYjY5ODAzMjIyYTRj
YjM5YWQxYTg1MDBmYTZjNjM4NDgyMDY4OS4uNmFlMzYxNTEyYTZlYWZjOTQxNjU1Mjg1N2ZkZmI0
Yjc0YzFiZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCkBAIC0xMzEs
OSArMTMxLDkgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpzZXRJdGVtKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHUKICAgICB9CiAgICAgbV9jdXJyZW50
TGVuZ3RoID0gbmV3TGVuZ3RoOwogCi0gICAgcGFpcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6
aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKLSAgICBp
ZiAoIWFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0g
dmFsdWU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX21hcC5hZGQoa2V5LCB2YWx1ZSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdLZXkpCisg
ICAgICAgIGFkZFJlc3VsdC5pdGVyLT5zZWNvbmQgPSB2YWx1ZTsKIAogICAgIGludmFsaWRhdGVJ
dGVyYXRvcigpOwogCkBAIC0xNzEsOCArMTcxLDggQEAgdm9pZCBTdG9yYWdlTWFwOjppbXBvcnRJ
dGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEJl
IHN1cmUgdG8gY29weSB0aGUga2V5cy92YWx1ZXMgYXMgaXRlbXMgaW1wb3J0ZWQgb24gYSBiYWNr
Z3JvdW5kIHRocmVhZCBhcmUgZGVzdGluZWQKICAgICAvLyB0byBjcm9zcyBhIHRocmVhZCBib3Vu
ZGFyeQotICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHko
KSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOyAgLy8gVHJ1ZSBp
ZiB0aGUga2V5IGRpZG4ndCBleGlzdCBwcmV2aW91c2x5LgorICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleS5pc29sYXRlZENvcHkoKSwg
dmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdLZXkpOyAvLyBUcnVlIGlmIHRoZSBrZXkgZGlkbid0IGV4aXN0IHByZXZpb3VzbHkuCiAK
ICAgICBBU1NFUlQobV9jdXJyZW50TGVuZ3RoICsga2V5Lmxlbmd0aCgpID49IG1fY3VycmVudExl
bmd0aCk7CiAgICAgbV9jdXJyZW50TGVuZ3RoICs9IGtleS5sZW5ndGgoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggODEwYjk2NjVjMWZhODIw
ZTAxOTU0ZjcxZjE3YWVjNzdlNTVkZDI1Zi4uMTUxZmQzMWEwZGJhNjNkMDA2M2ZmYzc1YjUxNzc1
NDkyZjFhOTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRk
UGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNWR1N0eWxlZAogICAgIC8v
IG1hcCBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4aXN0cy4gU28gd2UgYWRkIHdpdGggYSB2YWx1
ZSBvZiAwLCBhbmQgaXQgZWl0aGVyIGZpbmRzIHRoZQogICAgIC8vIGV4aXN0aW5nIGVsZW1lbnQg
b3IgYWRkcyBhIG5ldyBvbmUgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBUaGUgIi5maXJzdC0+c2Vj
b25kIiBpZGlvbSBnZXRzCiAgICAgLy8gdXMgdG8gdGhlIGl0ZXJhdG9yIGZyb20gYWRkJ3MgcmVz
dWx0LCBhbmQgdGhlbiB0byB0aGUgdmFsdWUgaW5zaWRlIHRoZSBoYXNoIHRhYmxlLgotICAgIFNW
R1BlbmRpbmdFbGVtZW50cyomIHNldCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIDApLmZp
cnN0LT5zZWNvbmQ7CisgICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVz
b3VyY2VzLmFkZChpZCwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmICghc2V0KQogICAgICAgICBz
ZXQgPSBuZXcgU1ZHUGVuZGluZ0VsZW1lbnRzOwogICAgIHNldC0+YWRkKGVsZW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNzEyMjAwY2U2OTNjOWQ1ZGFiMTgw
YTA3MTVmZWI3YTFmOWY2MzUzMy4uZGMxNjBkZjNkYzA0MGU0YzQxMDNhMWY4NGNlZDYwMDU3NTM0
NGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC04OTksOSArODk5
LDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmEKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0
UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX3JlcXVlc3RIZWFkZXJzLmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1
bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgdmFsdWU7
CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMu
YWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmVz
dWx0Lml0ZXItPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CiB9CiAKIFN0cmluZyBYTUxIdHRwUmVx
dWVzdDo6Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCAxNTRiNjdlOTJkMzJjN2QxNzZi
Y2I4MTA5MGU4ZGY0MTk4YjRiMDBhLi40YjNiNzAwNThhZTgzNGZjNTc1MDU1NzY0OTVlYWExOGEw
NTM5MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTM1MCw3ICsz
NTAsNyBAQCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAogICAgICAgICAvLyBJZiB0aGVy
ZSBhcmUgc2V2ZXJhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGlkLCBpZCgpIHNob3VsZCByZXR1cm4g
dGhlIGZpcnN0IG9uZS4KICAgICAgICAgLy8gSW4gV2ViS2l0LCBnZXRFbGVtZW50QnlJZCBiZWhh
dmVzIHNvLCB0b28sIGFsdGhvdWdoIGl0cyBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgZm9ybWFs
bHkgdW5kZWZpbmVkLgogICAgICAgICBOb2RlKiBub2RlID0gY29udGV4dFNjb3BlLT5nZXRFbGVt
ZW50QnlJZChTdHJpbmcoaWRMaXN0LmNoYXJhY3RlcnMoKSArIHN0YXJ0UG9zLCBlbmRQb3MgLSBz
dGFydFBvcykpOwotICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKG5vZGUpLnNlY29u
ZCkKKyAgICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFkZChub2RlKS5pc05ld0tleSkKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQobm9kZSk7CiAgICAgICAgIAogICAgICAgICBzdGFydFBv
cyA9IGVuZFBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKaW5kZXggZDlkMWZkNDdkNjY0ZjBj
OWJkZjE0NmFjMjFkZDkzYWRmYWI0YTIwNC4uYjcwNmJjYWE3NWExZTZkZmE2MWM3YTJiMDc0M2Q5
ZTI2OGNjYWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIExvY2F0aW9uUGF0aDo6ZXZhbHVhdGUoTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IG1hdGNoZXMu
c2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtYXRj
aGVzW25vZGVJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKCFuZWVkVG9DaGVja0ZvckR1cGxp
Y2F0ZU5vZGVzIHx8IG5ld05vZGVzU2V0LmFkZChub2RlKS5zZWNvbmQpCisgICAgICAgICAgICAg
ICAgaWYgKCFuZWVkVG9DaGVja0ZvckR1cGxpY2F0ZU5vZGVzIHx8IG5ld05vZGVzU2V0LmFkZChu
b2RlKS5pc05ld0tleSkKICAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZXMuYXBwZW5kKG5vZGUp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRl
LmNwcAppbmRleCA1OGNkODc5OGViMzYzYWViYjZiNDhjMzM5NTY3MDBmZjEwNzVhNTc3Li5jZjFi
OWM3ZDJlMDdhNzcwYTE3ZDA1NGNiYmE0OTNkY2UxOGI5NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBWYWx1ZSBVbmlvbjo6ZXZhbHVh
dGUoKSBjb25zdAogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmhzTm9kZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IHJoc05vZGVzW2ldOwotICAgICAgICBp
ZiAobm9kZXMuYWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAgaWYgKG5vZGVzLmFkZChub2RlKS5p
c05ld0tleSkKICAgICAgICAgICAgIHJlc3VsdFNldC5hcHBlbmQobm9kZSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCBl
M2RjZThjNWFjNGQ2ZjZjZTQ3Njk4ZTJmM2E3MTI1MjYxMjJjNzU5Li44YTVmODMyMzdiYTJkNWNk
ODY5NWQxNTYyYjk5NGRiYTU5MTY0Yjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFdlYkhUVFBM
b2FkSW5mbzo6c2V0RW5jb2RlZERhdGFMZW5ndGgobG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
KQogCiBzdGF0aWMgdm9pZCBhZGRIZWFkZXIoSFRUUEhlYWRlck1hcCogbWFwLCBjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcGFpcjxIVFRQSGVh
ZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUpOwot
ICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0g
IiwgIiArIFN0cmluZyh2YWx1ZSk7CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1hcC0+YWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAg
ICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZhbHVlKTsKIH0KIAog
dm9pZCBXZWJIVFRQTG9hZEluZm86OmFkZFJlcXVlc3RIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGVjMjEyZTUxNzdjYzU4NjM4Y2UwMTcyYzc1ZjEw
OGQzZjM3NTJkM2IuLmI2ZmU4NTJhZjczYjQ1NGNlOGY2ZDAwM2Y3MDU4YzE4NjJjZGZmM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTI1
MCwxMCArMjUwLDEwIEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYKICAgICAvLyBGSVhNRTogQWRk
IGFuIGFkZEhUVFBIZWFkZXJGaWVsZCBtZXRob2QgdG8gUmVzb3VyY2VSZXNwb25zZS4KICAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiBtYXAgPSBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+
aHR0cEhlYWRlckZpZWxkcygpOwogICAgIFN0cmluZyB2YWx1ZVN0cih2YWx1ZSk7Ci0gICAgcGFp
cjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0KKyAgICBIVFRQSGVhZGVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0KICAgICAgICAgY29uc3RfY2FzdDxIVFRQSGVhZGVyTWFw
Kj4oJm1hcCktPmFkZChuYW1lLCB2YWx1ZVN0cik7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgdmFsdWVTdHI7CisgICAgaWYg
KCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgKz0gIiwgIiAr
IHZhbHVlU3RyOwogfQogCiB2b2lkIFdlYlVSTFJlc3BvbnNlOjpjbGVhckhUVFBIZWFkZXJGaWVs
ZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXRDT01BUEkuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcAppbmRl
eCBjNDQ1MGY3NDllZTFmYTk2NDVhNjEzMGVjOGJjM2JlZjk1NDRhMTRhLi4xYTMxZWFiZGQzNDg0
YWExMmM5NDc3YWNkYWYwZDMzYTNhM2E3ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJLaXRDT01BUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5j
cHAKQEAgLTUxLDEwICs1MSw5IEBAIHN0YXRpYyBDT01QdHI8SUNsYXNzRmFjdG9yeT4gY2xhc3NG
YWN0b3J5KGNvbnN0IENMU0lEJiBjbHNpZCkKICAgICB0eXBlZGVmIEhhc2hNYXA8Q0xTSUQsIENP
TVB0cjxJQ2xhc3NGYWN0b3J5PiwgQ0xTSURIYXNoLCBDTFNJREhhc2hUcmFpdHM+IEZhY3RvcnlN
YXA7CiAgICAgc3RhdGljIEZhY3RvcnlNYXAmIGZhY3RvcmllcyA9ICpuZXcgRmFjdG9yeU1hcDsK
IAotICAgIHBhaXI8RmFjdG9yeU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGZhY3Rvcmll
cy5hZGQoY2xzaWQsIDApOwotICAgIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiYgZmFjdG9yeSA9IHJl
c3VsdC5maXJzdC0+c2Vjb25kOwotICAgIGJvb2wgYWRkZWQgPSByZXN1bHQuc2Vjb25kOwotICAg
IGlmIChhZGRlZCAmJiBGQUlMRUQoRGxsR2V0Q2xhc3NPYmplY3QoY2xzaWQsIF9fdXVpZG9mKGZh
Y3RvcnkpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmZhY3RvcnkpKSkpCisgICAgRmFjdG9y
eU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGZhY3Rvcmllcy5hZGQoY2xzaWQsIDApOworICAgIENP
TVB0cjxJQ2xhc3NGYWN0b3J5PiYgZmFjdG9yeSA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CisgICAg
aWYgKHJlc3VsdC5pc05ld0tleSAmJiBGQUlMRUQoRGxsR2V0Q2xhc3NPYmplY3QoY2xzaWQsIF9f
dXVpZG9mKGZhY3RvcnkpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmZhY3RvcnkpKSkpCiAg
ICAgICAgIGZhY3RvcnkgPSAwOwogCiAgICAgcmV0dXJuIGZhY3Rvcnk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYTJmZmEwZjI1
MGJlODkwNjEyNDA3MWNkNDgyOWQ3ODhiN2I4YWYzOC4uZDFmZTIzM2VlMGFjMWIwM2YzMTA5Mzc4
YmU2MmJiOTMyYzljMzcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBL
ZXlUcmFpCiAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh2YWx1ZSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBpZiAoIXRlbXBIYXNoTWFwLmFk
ZChrZXksIHZhbHVlKS5zZWNvbmQpIHsKKyAgICAgICAgICAgIGlmICghdGVtcEhhc2hNYXAuYWRk
KGtleSwgdmFsdWUpLmlzTmV3S2V5KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFw
IGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgogICAgICAgICAgICAgICAgIGRl
Y29kZXItPm1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggM2My
ZjE0Y2VkMDNlOGYwOWJmMDUzOTY4ODliMTg0ZWY4Yjg1YzU5ZS4uNzZhMGMxYTBkZmViOTU0ZWZl
NTVkZmFmYWQ3YWIyNzc2OTk5ODgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBwcml2YXRlOgogUGFz
c1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQogewogICAgIE11dGV4TG9j
a2VyIGxvY2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAgcGFpcjxTeW5jTWVz
c2FnZVN0YXRlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1h
cCgpLmFkZChydW5Mb29wLCAwKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCAwKTsKIAotICAgIGlm
ICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQp
OwotICAgICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQu
aXNOZXdLZXkpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyLT5zZWNvbmQpOworICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsKICAgICB9CiAKICAgICBSZWZQdHI8U3luY01l
c3NhZ2VTdGF0ZT4gc3luY01lc3NhZ2VTdGF0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jTWVzc2FnZVN0
YXRlKHJ1bkxvb3ApKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHN5bmNNZXNzYWdlU3Rh
dGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IHN5bmNNZXNzYWdlU3RhdGUuZ2V0
KCk7CiAKICAgICByZXR1cm4gc3luY01lc3NhZ2VTdGF0ZS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCAyZjkwNWVjNmExMjQ4
NzBkODk3YmEzNzAwNGJlOGNhZDJmYjJjMTc0Li5jNzhkYTZmNmFkMjMwM2FlYTYwYTljOWI3NWFl
NjhkZDdiNjc5NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFy
eS5jcHAKQEAgLTM4LDE0ICszOCwxNCBAQCBNdXRhYmxlRGljdGlvbmFyeTo6fk11dGFibGVEaWN0
aW9uYXJ5KCkKIAogYm9vbCBNdXRhYmxlRGljdGlvbmFyeTo6YWRkKGNvbnN0IFN0cmluZyYga2V5
LCBBUElPYmplY3QqIGl0ZW0pCiB7Ci0gICAgc3RkOjpwYWlyPE1hcFR5cGU6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVtKTsKLSAgICByZXR1cm4gcmVzdWx0LnNl
Y29uZDsKKyAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgaXRl
bSk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05ld0tleTsKIH0KIAogYm9vbCBNdXRhYmxlRGljdGlv
bmFyeTo6c2V0KGNvbnN0IFN0cmluZyYga2V5LCBBUElPYmplY3QqIGl0ZW0pCiB7Ci0gICAgc3Rk
OjpwYWlyPE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5zZXQoa2V5LCBp
dGVtKTsKLSAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKKyAgICBNYXBUeXBlOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9tYXAuc2V0KGtleSwgaXRlbSk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05ld0tl
eTsKIH0KIAogdm9pZCBNdXRhYmxlRGljdGlvbmFyeTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYga2V5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAppbmRleCA5NjcyZjI4
ZGYzN2FhYjkxMWZkYzI4MWJlMmM2ODIwMDA1YzJhYmYxLi45Y2Y0NjA5YTQ1NWI4MGU5YTMxYzFl
NmMxNjc1MTMwYTY5OGRkOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNl
ck1lc3NhZ2VDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VD
b2RlcnMuaApAQCAtMjg1LDggKzI4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShtZXNzYWdlQ29kZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8SW1tdXRhYmxlRGljdGlvbmFy
eTo6TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC5zZXQoa2V5LCBlbGVtZW50
LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQorICAgICAg
ICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQg
PSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0LmlzTmV3S2V5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKaW5kZXggOWNlNTQ0MDdlNTY5ZDUwMzBmODFkYWJhMWVmZGNiOTliZmIwYTBmOS4uYTE4YjQ2
ZTYxZjZiY2NhYzA2N2IxNzk2NzAyOTYyYWY4ZTM5ODM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTI3MSwxOCArMjcxLDE3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwob3JpZ2luYWxVUkwpOwog
ICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBzdGQ6OnBhaXI8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0
SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAg
ICAvLyBOZXcgaXRlbS4KLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJhY2tGb3J3YXJk
RGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CisgICAgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0
SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7CisgICAg
ICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUo
b3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3
YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAv
LyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0T3Jp
Z2luYWxVUkwob3JpZ2luYWxVUkwpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRVUkwo
dXJsKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0VGl0bGUodGl0bGUpOwotICAgIHJl
c3VsdC5maXJzdC0+c2Vjb25kLT5zZXRCYWNrRm9yd2FyZERhdGEoYmFja0ZvcndhcmREYXRhLmRh
dGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZC0+
c2V0T3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQtPnNl
dFVSTCh1cmwpOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQtPnNldFRpdGxlKHRpdGxlKTsKKyAg
ICByZXN1bHQuaXRlci0+c2Vjb25kLT5zZXRCYWNrRm9yd2FyZERhdGEoYmFja0ZvcndhcmREYXRh
LmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSk7CiB9CiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cAppbmRleCBjZWJiYjMwYzFhZjNiNGQ5YzFkMjM5YjA4ZmJmNGU1YWU3NmVmNDZlLi5kYTcyMjY5
ZTg2NWM3ODYzZjE5OTQzZDA5MGZiNDVjMDEwNDQzODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBQYXNzUmVm
UHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpn
ZXRPckNyZWF0ZShOb2RlKgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBzdGQ6OnBhaXI8RE9NSGFuZGxlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkb21I
YW5kbGVDYWNoZSgpLmFkZChub2RlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4ocmVzdWx0LmZp
cnN0LT5zZWNvbmQpOworICAgIERPTUhhbmRsZUNhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9t
SGFuZGxlQ2FjaGUoKS5hZGQobm9kZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4ocmVzdWx0
Lml0ZXItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBu
b2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpjcmVhdGUobm9kZSk7Ci0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBub2RlSGFuZGxlLmdldCgpOworICAgIHJlc3VsdC5pdGVy
LT5zZWNvbmQgPSBub2RlSGFuZGxlLmdldCgpOwogICAgIHJldHVybiBub2RlSGFuZGxlLnJlbGVh
c2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAppbmRleCBlOTRlZGZkMzRiOGI4OWQzNmU5ZDNlN2ZkYjBjNDdhMDA1MjVlMTE5Li44ZjUx
NTY5ZGM0MDg2ZTg0NzRhZTgzNTliMmYzZjZmNjQ0NTM3MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIFBh
c3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Z2V0T3JDcmVhdGUoUmFuCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBzdGQ6OnBhaXI8RE9NSGFuZGxlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBkb21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25k
KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1
bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNO
ZXdLZXkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU+KHJlc3VsdC5pdGVyLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRl
KHJhbmdlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJhbmdlSGFuZGxlLmdldCgpOwor
ICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSByYW5nZUhhbmRsZS5nZXQoKTsKICAgICByZXR1cm4g
cmFuZ2VIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKaW5kZXggMjdlNGM3MmVhMWY3NGQ1ZTExNTU0NTRiOGEzNWM5Y2FlMzY5YThlYy4uY2Mx
MzliZTA2ODhiZmJhYzZkMDk3YzNmZDg5MGY3MzJiN2RkMWM0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFn
ZSkKICAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25J
RCk7CiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNh
dGlvbik7CiAgICAgCi0gICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLmZpcnN0OworICAgIE5vdGlmaWNhdGlvbkNv
bnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3Rp
ZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2NF90PigpKS5p
dGVyOwogICAgIGl0LT5zZWNvbmQuYXBwZW5kKG5vdGlmaWNhdGlvbklEKTsKICAgICAKICAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93
Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCks
IG5vdGlmaWNhdGlvbi0+aWNvblVSTCgpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnJlcGxhY2VJ
ZCgpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjMWJhMDUwY2Y2ZGExZDdh
YTE2MTc2MTQzN2Y0YzQ4ZDVhZGUyMWQxLi5iZWJiOTZkNWFiZWNiOWIwMDQwZDU1YWVjODg4Mzhk
NTU2NDFkMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTUxOCwxNiArNTE4LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmCiB7CiAgICAgLy8gSXQg
aXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmlu
ZyBhIHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2Ug
Z2V0cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2gg
dGhlIG5vcm1hbCB3YXkuIAotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViUGFnZT4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlE
LCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5m
aXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJQYWdlOjpj
cmVhdGUocGFnZUlELCBwYXJhbWV0ZXJzKTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViUGFnZT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCAwKTsK
KyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7CisgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXIt
PnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBXZWJQYWdlOjpjcmVhdGUo
cGFnZUlELCBwYXJhbWV0ZXJzKTsKIAogICAgICAgICAvLyBCYWxhbmNlZCBieSBhbiBlbmFibGVU
ZXJtaW5hdGlvbiBpbiByZW1vdmVXZWJQYWdlLgogICAgICAgICBkaXNhYmxlVGVybWluYXRpb24o
KTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIEFTU0VS
VChyZXN1bHQuaXRlci0+c2Vjb25kKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCkKQEAgLTczOSwxMyArNzM5LDEzIEBAIFdlYlBhZ2VHcm91cFBy
b3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAodWludDY0X3QgcGFnZUdyb3VwSUQpCiAKIFdl
YlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdy
b3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91cERhdGEucGFnZUdyb3VwSUQsIDApOwotICAgIGlm
IChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQp
OwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVh
dGUocGFnZUdyb3VwRGF0YSk7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VH
cm91cFByb3h5PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VH
cm91cERhdGEucGFnZUdyb3VwSUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAg
ICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXIt
PnNlY29uZCA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBy
ZXN1bHQuaXRlci0+c2Vjb25kLmdldCgpOwogfQogCiBzdGF0aWMgYm9vbCBjYW5QbHVnaW5IYW5k
bGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMTMwYjVlODcxNGQ4MTRl
MmE0NDJhMDA2YTIwMzk5MDllNTAyMDQ1Li5lZWMwZjFlZWE1ZTczNmI0ZjdlZjI1OGZlM2EwNzc4
YmM5YzIxMDUwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWly
YSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNoTWFw
PD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gdXNl
IEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgor
CiAyMDEyLTAzLTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBnZW5lcmF0ZS1ndGstZG9jIGRvZXNuJ3QgY29wZSB3aXRoIGN1c3RvbSBi
dWlsZCBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDU4MzQ4Njg0
OWQ1YzdlZjU1NGM2NzdhNmMyM2Y0ZmM5OGI4ZDFiOS4uY2NjNDZlZDM2MTY0MzY5MzYzNDNjOGZi
ZDhmN2EzNzkzNzZiNjNjMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTUwNCw3
ICs1MDQsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZChKU0NvbnRleHRSZWYgY29udGV4dCwgdQogICAgIGlmICghd29ybGRJRCkKICAg
ICAgICAgd29ybGQuYWRvcHQoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpOwogICAg
IGVsc2UgewotICAgICAgICBXS1JldGFpblB0cjxXS0J1bmRsZVNjcmlwdFdvcmxkUmVmPiYgd29y
bGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4mIHdvcmxkU2xvdCA9IHdvcmxk
TWFwKCkuYWRkKHdvcmxkSUQsIDApLml0ZXItPnNlY29uZDsKICAgICAgICAgaWYgKCF3b3JsZFNs
b3QpCiAgICAgICAgICAgICB3b3JsZFNsb3QuYWRvcHQoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0
ZVdvcmxkKCkpOwogICAgICAgICB3b3JsZCA9IHdvcmxkU2xvdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134350</attachid>
            <date>2012-03-28 11:31:27 -0700</date>
            <delta_ts>2012-03-28 13:40:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120328153125.patch</filename>
            <type>text/plain</type>
            <size>173807</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YzcxNzYyNDNlODE4ZDY0MDZjYjE1ZGJmMTQxNDRjNGY4YjQ0MDczLi4wYzZkODYyNWUwODQ4MTI1
ZjcyZjQ5ODcyMTc0OTA5YWNmYjFiZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSBpbnN0ZWFkIG9mIGEgc2ltcGxlCisgICAgICAgIHR5cGVkZWYuCisKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERh
dGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFk
ZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExv
YWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVi
dWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFy
YW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUv
SWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpT
Qzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9u
YXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZh
bHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFkZCk6CisgICAgICAgICogcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6CisgICAgICAgICogcnVu
dGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdlYWtHQ01hcCk6CisgICAgICAgIChKU0M6Oldl
YWtHQ01hcDo6QWRkUmVzdWx0OjpBZGRSZXN1bHQpOgorICAgICAgICAoQWRkUmVzdWx0KToKKyAg
ICAgICAgKEpTQzo6V2Vha0dDTWFwOjphZGQpOgorICAgICAgICAoSlNDOjpXZWFrR0NNYXA6OnNl
dCk6CisgICAgICAgICogdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmg6CisgICAgICAgIChKU0M6OlBy
b2ZpbGVUcmVlTm9kZTo6c2FtcGxlQ2hpbGQpOgorCiAyMDEyLTAzLTI3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIE9TUiBleGl0IHNob3VsZCBub3QgZ2Vu
ZXJhdGUgYW4gZXhpdCBmb3IgdmFyaWFibGVzIG9mIGlubGluZWVzIGlmIHRoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkODBh
Yjg0ZDA3OTU2ZjI1MmY5MWE4ZDQwMGJlODQ5OTRkOWM5MmE1Li44ZmQzMDA1NmFhYjg2OTVkZDZl
ZjE5OThlMTE2YTFjMWQ4YjViODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAzLTI4ICBD
YWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3Jp
cHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgSGFzaFRhYmxlPD46OmFkZCgpIGFuZCBkZXJpdmF0ZSBmdW5jdGlvbnMgcmV0dXJu
IGFuIEFkZFJlc3VsdCBzdHJ1Y3QgaW5zdGVhZAorICAgICAgICBvZiBhIHBhaXIuIFRoaXMgc3Ry
dWN0IGNvbnRhaW5zIGNvbnRhaW5zICdpdGVyJyBhbmQgJ2lzTmV3S2V5JyBtZW1iZXJzLCB0aGF0
IGFyZQorICAgICAgICBtb3JlIHJlYWRhYmxlIGF0IGNhbGxzaXRlcyB0aGFuIHByZXZpb3VzICdm
aXJzdCcgYW5kICdzZWNvbmQnLgorCisgICAgICAgICogd3RmL0hhc2hDb3VudGVkU2V0Lmg6Cisg
ICAgICAgIChIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAg
KiB3dGYvSGFzaE1hcC5oOgorICAgICAgICAoSGFzaE1hcCk6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKEhh
c2hTZXQpOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAq
IHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlOjpBZGRSZXN1bHQ6OkFk
ZFJlc3VsdCk6CisgICAgICAgIChBZGRSZXN1bHQpOgorICAgICAgICAoSGFzaFRhYmxlKToKKyAg
ICAgICAgKFdURjo6SGFzaFRhYmxlOjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAg
ICAgIChXVEY6Ojo6YWRkUGFzc2luZ0hhc2hDb2RlKToKKyAgICAgICAgKiB3dGYvTGlzdEhhc2hT
ZXQuaDoKKyAgICAgICAgKFdURjo6TGlzdEhhc2hTZXQ6OkFkZFJlc3VsdDo6QWRkUmVzdWx0KToK
KyAgICAgICAgKEFkZFJlc3VsdCk6CisgICAgICAgIChMaXN0SGFzaFNldCk6CisgICAgICAgIChX
VEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAqIHd0
Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjo6OnNldCk6
CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQp
OgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRp
ZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAg
IChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6
CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RGOjpBdG9taWNT
dHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IFBsYXRmb3Jt
U3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAzZjg3Y2M2MDQzY2ViNTdkNzMyZTcwNTdjMDQyMmJk
ZTI4ZDlkZTEuLjFkYWM5ZmMyZGRmNzUwMTZlNDA3MTA5ODdkZWI2MDRhM2M2NjllMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNzUgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2
ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNo
TWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8g
dXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRlc3RzLCBqdXN0IGEgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21p
dW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1b3RhVHJhY2tlcjo6dXBk
YXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFi
bGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6Z2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRPYmplY3QpOgorICAgICAg
ICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkZW50aWZp
ZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAg
KE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKToK
KyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZh
Y2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEp
OgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JT
dHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBkb20vQ2hl
Y2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vw
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9u
KToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRl
cjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2
ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6CisgICAgICAgICogZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5
VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5T
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24pOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6
OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9TdHls
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0
dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0
OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
R3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRk
VXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREZXJp
dmVkRm9udERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxh
YmlsaXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFUU1VTdHlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmdldENGU3RyaW5nQXR0cmli
dXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFNpemVGb250RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldFN0eWxlQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgIChIVFRQSGVh
ZGVyTWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRl
ckZpZWxkKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
RGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSk6CisgICAgICAgICogcGx1Z2lu
cy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0
YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRQZXJj
ZW50SGVpZ2h0RGVzY2VuZGFudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVu
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlZ2lvbjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogc3Rv
cmFnZS9TdG9yYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OnNldEl0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6aW1wb3J0SXRlbSk6CisgICAgICAg
ICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRS
ZXF1ZXN0SGVhZGVySW50ZXJuYWwpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuSWQ6OmV2YWx1YXRlKToKKyAgICAgICAgKiB4
bWwvWFBhdGhQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlvblBhdGg6
OmV2YWx1YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WFBhdGg6OlVuaW9uOjpldmFsdWF0ZSk6CisKIDIwMTItMDMtMjggIEFuZHJleSBL
b3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBv
bmx5IHVwZGF0ZSBUaW1lbGluZSBvdmVydmlldyB3aGVuIHJlYWxseSBuZWVkZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZTIxMWM5YjIwNGQwNjAyNmU1ZDExYWVlNDkwZDVmZGFiZGYy
YjhlNC4uOWVlMDE5NDIxZjdkOGJlNzQxZjZhY2QzMjhhMDdmODJkZjI0YzQwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJj
ZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9i
amVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEw
NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAgICog
c3JjL1dlYkhUVFBMb2FkSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OmFkZEhlYWRlcik6Cisg
ICAgICAgICogc3JjL1dlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
UmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisKIDIwMTItMDMtMjggIEZhZHkgU2FtdWVs
ICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgVmll
d3BvcnQgZGVmaW5lIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2YjBjNWViMGY5ZDFh
MDQ3N2ViY2RlMmE3ZmYzZGU5MDBkYzFmZmZjLi4zNGU1NjQyZjM0MzdlYzYxYjIyMzJkM2RjNzdj
YWY5NDY3NmNjMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMt
MjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBk
ZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4K
KworICAgICAgICAqIFdlYktpdENPTUFQSS5jcHA6CisgICAgICAgIChjbGFzc0ZhY3RvcnkpOgor
CiAyMDEyLTAzLTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
RnJhbWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbiB1c2VzIEZyYW1lIGZvciBjb250ZXh0
IHJhdGhlciB0aGFuIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTVlZGNlN2IzOGIxOTVkODE2OTg0
YTc4MWVmYzU1YzI3NmI2YzkwNC4uOTgzMjgxMTNlNzdjMzcxMDNjODRlYmM4NTQzZDYxZTU3YjA0
ODdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTI4ICBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvTXV0YWJsZURpY3Rp
b25hcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpNdXRhYmxlRGljdGlvbmFyeTo6YWRkKToKKyAg
ICAgICAgKFdlYktpdDo6TXV0YWJsZURpY3Rpb25hcnk6OnNldCk6CisgICAgICAgICogU2hhcmVk
L1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRGVjb2Rl
cjo6YmFzZURlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlBhZ2VHcm91cCk6CisKIDIwMTItMDMt
MjggIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0g
Rml4IFFXQVJOIGluIHRlc3RfbG9hZElnbm9yZUVtcHR5VXJsIEFQSSB0ZXN0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCA2MTNlNTM4YmM3NWRi
MzY5ZjdkZmY3YjY3OTg5MmNiNzAyYjMyMTM2Li5jNWJmMWE2ZjQyNTk4NWI4ZTU4YWUwNTM3YTNi
NjJmOGJlYmJlYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgOiBX
ZWFrSGFuZGxlT3duZXIgewogICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+IGVtcHR5OwotICAgICAgICAgICAgbV9wcm9wZXJ0eU1hcC5hZGQocHJvcGVy
dHlOYW1lLmltcGwoKSwgZW1wdHkpLmZpcnN0LT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIG93bmVy
LCB2YWx1ZSk7CisgICAgICAgICAgICBtX3Byb3BlcnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1w
bCgpLCBlbXB0eSkuaXRlci0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlbGV0ZVByaXZhdGVQcm9wZXJ0eShj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NsYXNzUmVmLmNwcAppbmRleCA1YzI0OWFiYWY2NWViYmE4OTJmOWY1MzAzMzRjNWRiYzBkOTVi
OTlkLi4zZDNlN2Q1MDZlNWI5YzU5MTUwZGE0YjU4N2NkNmE1MmJlNDFjYTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBPcGFx
dWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6OkpTR2xv
YmFsRGF0YSYsIE9wYXF1ZUpTQwogCiBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpT
Q2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBPd25QdHI8T3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3Bh
cXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3du
UHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhlYy0+Z2xvYmFs
RGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7
CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKICAgICAgICAgY29udGV4dERhdGEgPSBhZG9wdFB0cihu
ZXcgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcykpOwog
ICAgIHJldHVybiAqY29udGV4dERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDRhNmY0NjUzZWFi
ODkyZmM2ZGEwZGI5M2NiNDljYjE1NzFhNmFkZmIuLjA1MzExNjQ4Y2JlZTJhZGFkYTRlODVhNGFi
NTllNmU0ZjE4MGRlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDAsMTAgKzIwMCwxMCBAQCBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJv
b2wgaXNDb25zdGFudCwgUmVnaXN0ZQogewogICAgIGludCBpbmRleCA9IG1fY2FsbGVlUmVnaXN0
ZXJzLnNpemUoKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0
YW50ID8gUmVhZE9ubHkgOiAwKTsKLSAgICBwYWlyPFN5bWJvbFRhYmxlOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7Cisg
ICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVu
dC5pbXBsKCksIG5ld0VudHJ5KTsKIAotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAg
ICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRleCgpKTsKKyAg
ICBpZiAoIXJlc3VsdC5pc05ld0tleSkgeworICAgICAgICByMCA9ICZyZWdpc3RlckZvcihyZXN1
bHQuaXRlci0+c2Vjb25kLmdldEluZGV4KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC0yMTUsOSArMjE1LDkgQEAgaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxW
YXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXNDb25zdGFudCkKIHsKICAgICBpbnQg
aW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUoKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkgOiAwKTsKLSAgICBwYWlyPFN5bWJvbFRh
YmxlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1w
bCgpLCBuZXdFbnRyeSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICBpbmRleCA9
IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldEluZGV4KCk7CisgICAgU3ltYm9sVGFibGU6OkFkZFJl
c3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsK
KyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlci0+
c2Vjb25kLmdldEluZGV4KCk7CiAgICAgcmV0dXJuIGluZGV4OwogfQogCkBAIC05NjgsMjQgKzk2
OCwyNCBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5v
dEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZAogdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmFkZENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFN0cmluZ0lt
cGwqIHJlcCA9IGlkZW50LmltcGwoKTsKLSAgICBwYWlyPElkZW50aWZpZXJNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBtX2lkZW50aWZpZXJNYXAuYWRkKHJlcCwgbV9jb2RlQmxvY2stPm51
bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIC8vIG5ldyBlbnRy
eQorICAgIElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2lkZW50aWZpZXJNYXAu
YWRkKHJlcCwgbV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CisgICAgaWYgKHJl
c3VsdC5pc05ld0tleSkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRp
ZmllcihtX2dsb2JhbERhdGEsIHJlcCkpOwogCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vj
b25kOworICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vjb25kOwogfQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlIHYpCiB7CiAgICAgaW50
IGluZGV4ID0gbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CiAKLSAgICBwYWlyPEpTVmFsdWVNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2
KSwgbV9uZXh0Q29uc3RhbnRPZmZzZXQpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAg
SlNWYWx1ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6
ZW5jb2RlKHYpLCBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0tl
eSkgewogICAgICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CiAgICAgICAgICsrbV9uZXh0
Q29uc3RhbnRPZmZzZXQ7CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVl
KHYpKTsKICAgICB9IGVsc2UKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlci0+c2Vjb25kOwogCiAgICAgcmV0dXJuICZtX2Nv
bnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiB9CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3Vi
bGUgbnVtYmVyKQogICAgIC8vIHdvcmsgY29ycmVjdGx5IHdpdGggTmFOIGFzIGEga2V5LgogICAg
IGlmIChpc25hbihudW1iZXIpIHx8IG51bWJlciA9PSBIYXNoVHJhaXRzPGRvdWJsZT46OmVtcHR5
VmFsdWUoKSB8fCBIYXNoVHJhaXRzPGRvdWJsZT46OmlzRGVsZXRlZFZhbHVlKG51bWJlcikpCiAg
ICAgICAgIHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKG51bWJlcikpOwotICAgIEpTVmFs
dWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVlKCkpLmZpcnN0
LT5zZWNvbmQ7CisgICAgSlNWYWx1ZSYgdmFsdWVJbk1hcCA9IG1fbnVtYmVyTWFwLmFkZChudW1i
ZXIsIEpTVmFsdWUoKSkuaXRlci0+c2Vjb25kOwogICAgIGlmICghdmFsdWVJbk1hcCkKICAgICAg
ICAgdmFsdWVJbk1hcCA9IGpzTnVtYmVyKG51bWJlcik7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRz
dCwgdmFsdWVJbk1hcCk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3VibGUgbnVtYmVyKQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5N
YXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLmZpcnN0LT5zZWNvbmQ7
CisgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVy
LmltcGwoKSwgMCkuaXRlci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApCiAgICAgICAg
IHN0cmluZ0luTWFwID0ganNPd25lZFN0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0
cmluZygpKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0luTWFwKSk7
CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29u
c3RhbnRCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0
b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0g
ICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmlt
cGwoKSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9z
dHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYg
KCFzdHJpbmdJbk1hcCkgewogICAgICAgICBzdHJpbmdJbk1hcCA9IGpzU3RyaW5nKGdsb2JhbERh
dGEoKSwgaWRlbnRpZmllci51c3RyaW5nKCkpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKHN0
cmluZ0luTWFwKTsKQEAgLTE3MTgsMTAgKzE3MTgsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uQm9keU5v
ZGUKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMYXp5TmV3RnVuY3Rpb24o
UmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbikKIHsKLSAgICBzdGQ6
OnBhaXI8RnVuY3Rpb25PZmZzZXRNYXA6Oml0ZXJhdG9yLCBib29sPiBwdHIgPSBtX2Z1bmN0aW9u
T2Zmc2V0cy5hZGQoZnVuY3Rpb24sIDApOwotICAgIGlmIChwdHIuc2Vjb25kKQotICAgICAgICBw
dHIuZmlyc3QtPnNlY29uZCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0
aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24pKTsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9u
SW50ZXJuYWwoZHN0LCBwdHIuZmlyc3QtPnNlY29uZCwgdHJ1ZSk7CisgICAgRnVuY3Rpb25PZmZz
ZXRNYXA6OkFkZFJlc3VsdCBwdHIgPSBtX2Z1bmN0aW9uT2Zmc2V0cy5hZGQoZnVuY3Rpb24sIDAp
OworICAgIGlmIChwdHIuaXNOZXdLZXkpCisgICAgICAgIHB0ci5pdGVyLT5zZWNvbmQgPSBtX2Nv
ZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0
aW9uKSk7CisgICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgcHRyLml0ZXIt
PnNlY29uZCwgdHJ1ZSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdpc3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4LCBib29s
IGRvTnVsbENoZWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGJiOTVjYWZiNjgyNjNhOWJmNTEwYWE0ZTQyMjdmNWVh
NDNhM2VlOTguLjM4Y2M3MGQyM2QwMzQ0NTAzOTZhYTcwM2ZiZTNiZDljMDE4YjJjMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKQEAgLTI1Niw5ICsyNTYsOSBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJQYWlyIHBhaXIobm9k
ZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4oMCkpOwotICAgICAgICAgICAgc3RkOjpwYWly
PEdldHRlclNldHRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC5hZGQobm9kZS0+
bmFtZSgpLmltcGwoKSwgcGFpcik7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0g
ICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuc2Vjb25kID0gbm9kZTsKKyAgICAg
ICAgICAgIEdldHRlclNldHRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5hZGQobm9kZS0+
bmFtZSgpLmltcGwoKSwgcGFpcik7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkK
KyAgICAgICAgICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kLnNlY29uZCA9IG5vZGU7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlbWFpbmluZyBwcm9wZXJ0aWVz
IGluIHRoZSBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5j
cHAKaW5kZXggNDQxYzlhZWQzMzFjOGIzZWI4ZDc2MjM0MGNiYTkzNTM0ZGM1MzRlYS4uYjBjOWZm
NTNlMjI2ZDUyM2IyYThkMjNiYmM4MDk0NzY2YzIyMzQwMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGlubGluZSB2b2lk
IFJlY29tcGlsZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQogCiAgICAgLy8gQ2hlY2sgaWYg
dGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIHNldCAtIGlmIHNvLAogICAgIC8vIHdlJ3Zl
IGFscmVhZHkgcmV0cmFuc2xhdGVkIGl0LCBub3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgaWYgKCFt
X2Z1bmN0aW9uRXhlY3V0YWJsZXMuYWRkKGV4ZWN1dGFibGUpLnNlY29uZCkKKyAgICBpZiAoIW1f
ZnVuY3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJsZSkuaXNOZXdLZXkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxP
YmplY3QtPkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggOTY5MTAxZTg3YzUzOGM5
NWQxN2QxNjUxYWUyYWM1ZDZkMzZiMjU5ZC4uYmM4MWIyNGExMTdlZDRjNDYwODQ2NDBkOGJmNzc1
M2Y5NjAxODJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+JiBBc3NlbWJseUhlbHBlcnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayoK
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdENvZGVNYXAoKSk7CiAgICAgCi0gICAgc3Rk
OjpwYWlyPEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dD4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2Rl
QmxvY2ssIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+KCkpOworICAgIEhhc2hNYXA8
Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gPjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ssIFZlY3RvcjxCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQ+KCkpOwogICAgIAotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAg
ICAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KQorICAgICAgICBjb2RlQmxvY2stPmppdENvZGVN
YXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyLT5zZWNvbmQpOwogICAgIAotICAgIHJldHVybiByZXN1
bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsKIH0KIAog
I2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOTI4NTA1NjNhZWQ1MTE1Mzk3Y2FjOGE0MjI3
NThiMDc0Yjg2YTRhMy4uYzcwMTE5N2JiMDYxMjBiNDM1NzlmYjRmOTEzMzIxMTIyNjExNmNjOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTU1MSwxMSArNTUxLDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgTm9kZUluZGV4IGNlbGxD
b25zdGFudChKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBwYWlyPEhhc2hNYXA8SlNDZWxs
KiwgTm9kZUluZGV4Pjo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX2NlbGxDb25zdGFudE5vZGVz
LmFkZChjZWxsLCBOb05vZGUpOwotICAgICAgICBpZiAoaXRlci5zZWNvbmQpCi0gICAgICAgICAg
ICBpdGVyLmZpcnN0LT5zZWNvbmQgPSBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8o
Y2VsbCkpOworICAgICAgICBIYXNoTWFwPEpTQ2VsbCosIE5vZGVJbmRleD46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX2NlbGxDb25zdGFudE5vZGVzLmFkZChjZWxsLCBOb05vZGUpOworICAgICAgICBp
ZiAocmVzdWx0LmlzTmV3S2V5KQorICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IGFk
ZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CiAgICAgICAgIAotICAgICAg
ICByZXR1cm4gaXRlci5maXJzdC0+c2Vjb25kOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXIt
PnNlY29uZDsKICAgICB9CiAgICAgCiAgICAgQ29kZU9yaWdpbiBjdXJyZW50Q29kZU9yaWdpbigp
CkBAIC0yNTk1LDEwICsyNTk1LDEwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5
OjpJbmxpbmVTdGFja0VudHJ5KEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlCiAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMo
KTsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmdJbXBsKiByZXAgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIoaSkuaW1wbCgpOwotICAgICAgICAgICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1faWRlbnRpZmllck1hcC5hZGQocmVw
LCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkKKyAgICAgICAgICAgIElkZW50aWZpZXJNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChy
ZXAsIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpCiAgICAgICAgICAgICAgICAgYnl0ZUNv
ZGVQYXJzZXItPm1fY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKElkZW50aWZpZXIoYnl0ZUNvZGVQ
YXJzZXItPm1fZ2xvYmFsRGF0YSwgcmVwKSk7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1h
cFtpXSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgbV9pZGVudGlmaWVyUmVt
YXBbaV0gPSByZXN1bHQuaXRlci0+c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7ICsr
aSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay0+Z2V0Q29uc3RhbnQo
aSArIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKQEAgLTI2MTEsMTIgKzI2MTEsMTIgQEAg
Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNv
ZGVQYXJzZXIqIGJ5dGVDb2RlUGFyc2UKICAgICAgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBb
aV0gPSBieXRlQ29kZVBhcnNlci0+bV9lbXB0eUpTVmFsdWVJbmRleDsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhaXI8SlNWYWx1ZU1hcDo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRk
KEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVt
YmVyT2ZDb25zdGFudFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwot
ICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgICAgIEpTVmFsdWVNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9qc1ZhbHVlTWFwLmFkZChKU1Zh
bHVlOjplbmNvZGUodmFsdWUpLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9m
Q29uc3RhbnRSZWdpc3RlcnMoKSArIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgICAgICAgICBieXRlQ29kZVBh
cnNlci0+bV9jb2RlQmxvY2stPmFkZENvbnN0YW50KHZhbHVlKTsKICAgICAgICAgICAgICAgICBi
eXRlQ29kZVBhcnNlci0+bV9jb25zdGFudHMuYXBwZW5kKENvbnN0YW50UmVjb3JkKCkpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgbV9jb25zdGFudFJlbWFwW2ldID0gcmVzdWx0LmZpcnN0
LT5zZWNvbmQ7CisgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuaXRlci0+
c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbGxzaXRlQmxvY2tIZWFk
TmVlZHNMaW5raW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
aW5kZXggOWFlMzJjNGIwZGUyYjY5ZTMzMWE1OGFkZmM0MGU0MTUxY2EyZmE5MC4uZjRjY2Q4OWU3
MGEzYzk4NWQ5Y2I1NGM2NGRmZDE5NGEyMTQ1ZWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKQEAgLTM1NTgsMjQgKzM1NTgsMjQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04oRW5jb2RlZEpTVmFsdWUsIHRvX29iamVjdCkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIEpJ
VFRodW5rczo6Y3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRodW5rR2VuZXJhdG9y
IGdlbmVyYXRvcikKIHsKLSAgICBzdGQ6OnBhaXI8Q1RJU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+
IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChnZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZigpKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25k
ID0gZ2VuZXJhdG9yKGdsb2JhbERhdGEpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25k
OworICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2Vu
ZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3S2V5
KQorICAgICAgICBlbnRyeS5pdGVyLT5zZWNvbmQgPSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7Cisg
ICAgcmV0dXJuIGVudHJ5Lml0ZXItPnNlY29uZDsKIH0KIAogTmF0aXZlRXhlY3V0YWJsZSogSklU
VGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZl
RnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogewotICAgIHN0
ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9o
b3N0RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFi
bGU+KCkpOwotICAgIGlmICghcmVzdWx0LmZpcnN0LT5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5h
dGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJTmF0aXZl
Q2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNvbnN0
cnVjdG9yLCBOb0ludHJpbnNpYykpOwotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5n
ZXQoKTsKKyAgICBIb3N0RnVuY3Rpb25TdHViTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9ob3N0
RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+
KCkpOworICAgIGlmICghcmVzdWx0Lml0ZXItPnNlY29uZCkKKyAgICAgICAgcmVzdWx0Lml0ZXIt
PnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVF
eGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwo
Z2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjb25zdHJ1Y3Rv
ciwgTm9JbnRyaW5zaWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZC5nZXQoKTsK
IH0KIAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJh
dG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYykKIHsKLSAgICBzdGQ6OnBhaXI8SG9z
dEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25T
dHViTWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOwotICAg
IGlmICghKmVudHJ5LmZpcnN0LT5zZWNvbmQpIHsKKyAgICBIb3N0RnVuY3Rpb25TdHViTWFwOjpB
ZGRSZXN1bHQgZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwgUGFz
c1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7CisgICAgaWYgKCEqZW50cnkuaXRlci0+c2Vjb25k
KSB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlOwogICAgICAgICBpZiAoZ2Vu
ZXJhdG9yKSB7CiAgICAgICAgICAgICBpZiAoZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0z
NTg0LDkgKzM1ODQsOSBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlv
blN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdQogICAgICAgICAgICAgICAg
IGNvZGUgPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBjb2RlID0gSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlv
bik7Ci0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVFeGVjdXRh
YmxlPigqZ2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBj
b2RlLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
ciwgaW50cmluc2ljKSk7CisgICAgICAgIGVudHJ5Lml0ZXItPnNlY29uZCA9IFBhc3NXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmds
b2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKICAgICB9Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0
LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIGVudHJ5Lml0ZXItPnNlY29uZC5nZXQoKTsKIH0K
IAogdm9pZCBKSVRUaHVua3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGY1ODg0N2ZkMjQ2NzhmMmYyNTJjMzUxYjVk
OGQzYmU5ZTUzNWFiNzIuLjFlYzU2Njk1M2FlMDdlNmFlZjczMDE0MTI5ZTMxMTE1ZjQyOGE5Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzMjMsMTIgKzEz
MjMsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICAgICAgcHJvcGVydHkgPSBwYXJz
ZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7
CiAgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKSB7Ci0gICAgICAgICAgICBz
dGQ6OnBhaXI8T2JqZWN0VmFsaWRhdGlvbk1hcDo6aXRlcmF0b3IsIGJvb2w+IHByb3BlcnR5RW50
cnlJdGVyID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmlt
cGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb3Bl
cnR5RW50cnlJdGVyLnNlY29uZCkgewotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocHJvcGVy
dHlFbnRyeUl0ZXIuZmlyc3QtPnNlY29uZCA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAg
ICAgICAgICAgIE9iamVjdFZhbGlkYXRpb25NYXA6OkFkZFJlc3VsdCBwcm9wZXJ0eUVudHJ5ID0g
b2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwoKSwgY29u
dGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5RW50cnku
aXNOZXdLZXkpIHsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnkuaXRl
ci0+c2Vjb25kID09IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwogICAgICAgICAgICAgICAgIGZh
aWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50KTsKLSAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkgJiBwcm9wZXJ0eUVudHJ5SXRlci5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgICAgICAgICBw
cm9wZXJ0eUVudHJ5SXRlci5maXJzdC0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSk7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkp
ICYgcHJvcGVydHlFbnRyeS5pdGVyLT5zZWNvbmQpOworICAgICAgICAgICAgICAgIHByb3BlcnR5
RW50cnkuaXRlci0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlM
aXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDc1MTNkMWYxMWZkNDg5NTgyOGFmOGNhZWJl
ODBhZGExNWI1ZjU3ZjkuLmEyYjJlMTE0ODgzMGYyMGY1YjE5MzM0ZTJmZjA3MzYwNThhMjUyMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBkZWNsYXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50KQogICAgIHsKICAgICAgICAgYm9vbCBpc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0
YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudDsKLSAgICAgICAgYm9vbCBpc1Zh
bGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCku
aW1wbCgpKS5zZWNvbmQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICpp
ZGVudCAmJiAhaXNBcmd1bWVudHM7CisgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBt
X2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuaXNOZXdLZXkg
JiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAhaXNBcmd1
bWVudHM7CiAgICAgICAgIG1faXNWYWxpZFN0cmljdE1vZGUgPSBtX2lzVmFsaWRTdHJpY3RNb2Rl
ICYmIGlzVmFsaWRTdHJpY3RNb2RlOwogICAgICAgICBpZiAoaXNBcmd1bWVudHMpCiAgICAgICAg
ICAgICBzZXRGbGFncyhTaGFkb3dzQXJndW1lbnRzRmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IGZiYzU3ODdjZTY1NzJhOGQ4NGQ3YzA0
YmY4MjMxN2Y1ODQ4MDZiNjMuLmMyNjAzOTc5ZDE3ODEzNjg5ODhhZTEwZDJlY2FkNTFiMjkxNGVm
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCkBA
IC0xMTAsMTEgKzExMCwxMSBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFk
ZChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIGMpCiAgICAgaWYgKGl0ZXIg
IT0gbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnNl
Y29uZDsKIAotICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBh
ZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRkPGNvbnN0IExDaGFyKiwgSWRlbnRpZmllckNT
dHJpbmdUcmFuc2xhdG9yPihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYykpOworICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gaWRlbnRpZmllclRh
YmxlLmFkZDxjb25zdCBMQ2hhciosIElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGMpKTsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMg
bmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBi
b29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZGVkU3RyaW5nID0gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRS
ZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5maXJzdDsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
YWRkZWRTdHJpbmcgPSBhZGRSZXN1bHQuaXNOZXdLZXkgPyBhZG9wdFJlZigqYWRkUmVzdWx0Lml0
ZXIpIDogKmFkZFJlc3VsdC5pdGVyOwogCiAgICAgbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5hZGQo
YywgYWRkZWRTdHJpbmcuZ2V0KCkpOwogCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBVQ2hhciogcwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1w
bDo6ZW1wdHkoKTsKICAgICBDaGFyQnVmZmVyPFVDaGFyPiBidWYgPSB7cywgbGVuZ3RofTsgCi0g
ICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9
IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVu
dGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yID4oYnVmKTsKKyAgICBIYXNoU2V0PFN0cmlu
Z0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJs
ZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xh
dG9yID4oYnVmKTsKICAgICAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0
ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUg
cGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25k
ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIHJl
dHVybiBhZGRSZXN1bHQuaXNOZXdLZXkgPyBhZG9wdFJlZigqYWRkUmVzdWx0Lml0ZXIpIDogKmFk
ZFJlc3VsdC5pdGVyOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CkBAIC0yMTAs
NyArMjEwLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGRTbG93Q2Fz
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0cmluZ0kKICAgICAgICAgICAgICAgICByZXR1
cm4gcjsKICAgICB9CiAKLSAgICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+
YWRkKHIpLmZpcnN0OworICAgIHJldHVybiAqZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5h
ZGQocikuaXRlcjsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGRT
bG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggYjllNWExODU0NDkyMzk3ODc0NjAyOTJh
MjJlYWIzNTJiZjdiOGUyMi4uYTQ5NjRiOWYxZmUzYWYwNDI2M2YwNjUxYzNkNzgyMTcxMTNjMGE5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMTc4
LDExICsxNzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAgICAgICAgIENoYXJCdWZmZXI8
VD4gYnVmID0ge3MsIGxlbmd0aH07IAotICAgICAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxl
LT5hZGQ8Q2hhckJ1ZmZlcjxUPiwgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yPFQ+ID4o
YnVmKTsKKyAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUtPmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlm
aWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I8VD4gPihidWYpOwogICAgICAgICAKICAgICAgICAgLy8g
SWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQg
aXQuCiAgICAgICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQg
aXMgc28uCi0gICAgICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJl
c3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgICAgICByZXR1cm4gYWRkUmVzdWx0
LmlzTmV3S2V5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyKSA6ICphZGRSZXN1bHQuaXRlcjsK
ICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEs
IGNvbnN0IElkZW50aWZpZXImIGIpCkBAIC0yNDYsMTAgKzI0NiwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQsIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJbXBsPiA+LCBJZGVudGlmaWVyTWFw
SW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJh
dG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZhbHVlKQorICAgIEhhc2hTZXQ8U3Ry
aW5nSW1wbCo+OjpBZGRSZXN1bHQgSWRlbnRpZmllclRhYmxlOjphZGQoVSB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsKLSAgICAgICAgKCpyZXN1bHQuZmly
c3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWJsZS5hZGQ8VSwgVj4odmFsdWUpOworICAgICAgICAo
KnJlc3VsdC5pdGVyKS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCAyYzYyMGI0YWU1ODlkMWVjOWU2ZjQ3NjkyZTQ0NmNmYTg1NjNkNDAxLi5mYWY2MGZiZmQx
ODU1ZmY0NTMzMjkxYWVlY2YzNWRkZWY2NGRjNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMTk1LDEwICsxOTUsMTAgQEAgdm9pZCBKU0FycmF5Ojpm
aW5hbGl6ZShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+ZGVhbGxvY2F0ZVNwYXJzZU1h
cCgpOwogfQogCi1pbmxpbmUgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9y
LCBib29sPiBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVk
IGkpCitpbmxpbmUgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5VmFs
dWVNYXA6OmFkZChKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSkKIHsKICAgICBTcGFyc2VBcnJh
eUVudHJ5IGVudHJ5OwotICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9t
YXAuYWRkKGksIGVudHJ5KTsKKyAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGksIGVu
dHJ5KTsKICAgICBzaXplX3QgY2FwYWNpdHkgPSBtX21hcC5jYXBhY2l0eSgpOwogICAgIGlmIChj
YXBhY2l0eSAhPSBtX3JlcG9ydGVkQ2FwYWNpdHkpIHsKICAgICAgICAgSGVhcDo6aGVhcChhcnJh
eSktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCgoY2FwYWNpdHkgLSBtX3JlcG9ydGVkQ2FwYWNpdHkp
ICogKHNpemVvZih1bnNpZ25lZCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpOwpA
QCAtMjA5LDE0ICsyMDksMTQgQEAgaW5saW5lIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFw
OjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKEoKIAogaW5saW5lIHZv
aWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJy
YXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAg
c3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBh
ZGQoYXJyYXksIGkpOwotICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0LmZpcnN0
LT5zZWNvbmQ7CisgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CisgICAgU3Bh
cnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuaXRlci0+c2Vjb25kOwogCiAgICAgLy8gVG8g
c2F2ZSBhIHNlcGFyYXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNw
YXJzZSBtYXAuCiAgICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3
IHByb3BlcnR5LCBhbmQgdGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRoaXMg
aXMgbm90IHRoZSByaWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCi0g
ICAgaWYgKHJlc3VsdC5zZWNvbmQgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAg
ICByZW1vdmUocmVzdWx0LmZpcnN0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5ICYmICFhcnJh
eS0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyKTsKICAgICAg
ICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjUyLDE0ICsyNTIsMTQgQEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKIAogaW5saW5lIGJvb2wg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSog
YXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0g
ICAgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBhZGQoYXJyYXksIGkpOwotICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CisgICAg
U3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuaXRlci0+c2Vjb25kOwogCiAgICAgLy8g
VG8gc2F2ZSBhIHNlcGFyYXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhl
IHNwYXJzZSBtYXAuCiAgICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEg
bmV3IHByb3BlcnR5LCBhbmQgdGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRo
aXMgaXMgbm90IHRoZSByaWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4u
Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAg
ICAgICByZW1vdmUocmVzdWx0LmZpcnN0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5ICYmICFh
cnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyKTsKICAg
ICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gZGVm
aW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgIH0K
IApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBhbHdheXMgYmUg
YSBuZXcgZW50cnkgaW4gdGhlIG1hcCwgc28gbm8gbmVlZCB0byBjaGVjayB3ZSBjYW4gd3JpdGUs
CiAgICAgICAgIC8vIGFuZCBhdHRyaWJ1dGVzIGFyZSBkZWZhdWx0IHNvIG5vIG5lZWQgdG8gc2V0
IHRoZW0uCiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkp
LmZpcnN0LT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAg
IG1hcC0+YWRkKHRoaXMsIGkpLml0ZXItPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQqIG5ld1Jhd1N0b3JhZ2UgPSAwOwpAQCAtNDMwLDE1ICs0
MzAsMTUgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25OdW1lcmljUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHkKICAgICBBU1NFUlQobWFwKTsKIAogICAg
IC8vIDEuIExldCBjdXJyZW50IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Q
cm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggcHJvcGVydHkgbmFtZSBQLgotICAg
IHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bWFwLT5hZGQodGhpcywgaW5kZXgpOwotICAgIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYXAg
PSAmcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1hcC0+YWRkKHRoaXMsIGluZGV4KTsKKyAgICBTcGFyc2VBcnJheUVudHJ5
KiBlbnRyeUluTWFwID0gJnJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAKICAgICAvLyAyLiBMZXQgZXh0
ZW5zaWJsZSBiZSB0aGUgdmFsdWUgb2YgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFsIHByb3Bl
cnR5IG9mIE8uCiAgICAgLy8gMy4gSWYgY3VycmVudCBpcyB1bmRlZmluZWQgYW5kIGV4dGVuc2li
bGUgaXMgZmFsc2UsIHRoZW4gUmVqZWN0LgogICAgIC8vIDQuIElmIGN1cnJlbnQgaXMgdW5kZWZp
bmVkIGFuZCBleHRlbnNpYmxlIGlzIHRydWUsIHRoZW4KLSAgICBpZiAocmVzdWx0LnNlY29uZCkg
eworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUo
KSkgewotICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0LmZpcnN0KTsKKyAgICAgICAgICAg
IG1hcC0+cmVtb3ZlKHJlc3VsdC5pdGVyKTsKICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhl
YywgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmpl
Y3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggYWQ5OGQ2NjE5MGIwM2NhNTVjODRhMDI4YzQ4
OTMwMmI1MWIxOGI5Yi4uODkwZmRmNGYwYTA5NDRlNTg0YjY2ZjFmNjRlMzU4MTNjOTcyNDMwNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNTUsNiArNTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgTWFwOjppdGVy
YXRvciBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBNYXA6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIE1hcDo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAog
ICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKCkKICAgICAgICAgICAgIDogbV9mbGFncyhOb3Jt
YWwpCkBAIC04Nyw3ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBUaGVzZSBt
ZXRob2RzIG1heSBtdXRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBtYXAKICAgICAgICAgdm9pZCBw
dXQoRXhlY1N0YXRlKiwgSlNBcnJheSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICAgICAgYm9vbCBwdXREaXJlY3QoRXhlY1N0YXRlKiwgSlNBcnJheSosIHVuc2ln
bmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJh
dG9yLCBib29sPiBhZGQoSlNBcnJheSosIHVuc2lnbmVkKTsKKyAgICAgICAgQWRkUmVzdWx0IGFk
ZChKU0FycmF5KiwgdW5zaWduZWQpOwogICAgICAgICBpdGVyYXRvciBmaW5kKHVuc2lnbmVkIGkp
IHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KICAgICAgICAgLy8gVGhpcyBzaG91bGQgQVNTRVJU
IHRoZSByZW1vdmUgaXMgdmFsaWQgKGNoZWNrIHRoZSByZXN1bHQgb2YgdGhlIGZpbmQpLgogICAg
ICAgICB2b2lkIHJlbW92ZShpdGVyYXRvciBpdCkgeyBtX21hcC5yZW1vdmUoaXQpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAK
aW5kZXggOGVmYjQwNjVlMTczOWNmMDVkNWQ5MTY2Yzc1YmVjZDgwZGRlMzBmYy4uMWI2YTkyNzlj
YTQxZWY2ZjI1OGJkMzg4ZDFjYWM5NDdjZmJkMzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcApAQCAtNDUsNyArNDUsNyBA
QCB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoU3RyaW5nSW1wbCogaWRlbnRpZmllcikKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAg
ICAgIG1fc2V0LmFkZChtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldLmltcGwoKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKCFtX3NldC5hZGQoaWRlbnRpZmllcikuc2Vjb25kKQorICAg
ICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5pc05ld0tleSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaAppbmRleCBlMzQwOGIwOGJiMjZhYzk0OGY3N2M3NWYy
YTM4MTQxNzA4NjdkNDQxLi5iYmZhMDQ2NzJjM2EyMzI5NGE5N2JiNzNlYTIwZGZhNjc0YmYxZDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNp
b25DaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlci5oCkBAIC00OCw3ICs0OCw3IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjaygpCiAgICAgaW50IHNpemUgPSBtX2V4ZWMtPmds
b2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLnNpemUoKTsKICAg
ICBpZiAoc2l6ZSA+PSBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCAmJiBzaXplID49IG1fZXhl
Yy0+Z2xvYmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKICAgICAgICAgcmV0dXJuIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKCk7Ci0gICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4ZWMtPmds
b2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZChtX3RoaXNP
YmplY3QpLnNlY29uZDsKKyAgICBib29sIGFscmVhZHlWaXNpdGVkID0gIW1fZXhlYy0+Z2xvYmFs
RGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHMuYWRkKG1fdGhpc09iamVj
dCkuaXNOZXdLZXk7CiAgICAgaWYgKGFscmVhZHlWaXNpdGVkKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsgLy8gUmV0dXJuIGVtcHR5IHN0cmluZyB0byBhdm9pZCBpbmZpbml0ZSByZWN1
cnNpb24uCiAgICAgcmV0dXJuIEpTVmFsdWUoKTsgLy8gSW5kaWNhdGUgc3VjY2Vzcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZlZTQxOWRhNmE3
OGY4MTI2NmJlZTJkNmE0YWY1YzU2ZDllZDk3NTMuLjc3YWZkYWU2ZWQ1Nzc1YTZjNjYzMjA1NmYx
NWQyY2IzZTZjYWYzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlOjphZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHMKICAg
ICAvLyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4gc3RkOjptYWtlX3BhaXIgZnVu
Y3Rpb24gdGhhdCB0YWtlcyBydmFsdWUgcmVmZXJlbmNlcy4KICAgICAvLyBXaGVuIGVpdGhlciBv
ZiB0aGUgcGFyYW1ldGVycyBhcmUgYml0ZmllbGRzLCB0aGUgQysrIGNvbXBpbGVyIHdpbGwgdHJ5
IHRvIGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3aGljaCBpcyBpbnZhbGlkLiBUbyB3b3JrIGFyb3Vu
ZCB0aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1ha2UgdGhlIHBhcmFtZXRlciBhbiBydmFsdWUuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI2MSBm
b3IgbW9yZSBkZXRhaWxzCi0gICAgc3RkOjpwYWlyPFRyYW5zaXRpb25NYXA6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFpcihzdHJ1Y3R1cmUt
Pm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBz
dHJ1Y3R1cmUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgIFRyYW5zaXRpb25NYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFpcihzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlv
dXMpLCBzdHJ1Y3R1cmUpOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAgIC8v
IFRoZXJlIGFscmVhZHkgaXMgYW4gZW50cnkhIC0gd2Ugc2hvdWxkIG9ubHkgaGl0IHRoaXMgd2hl
biBkZXNwZWNpZnlpbmcuCi0gICAgICAgIEFTU0VSVChyZXN1bHQuZmlyc3QuZ2V0KCkuc2Vjb25k
LT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVy
LmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAgICAgIEFTU0VS
VCghc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAgICAgICAgbWFwKCkt
PnNldChyZXN1bHQuZmlyc3QsIHN0cnVjdHVyZSk7CisgICAgICAgIG1hcCgpLT5zZXQocmVzdWx0
Lml0ZXIsIHN0cnVjdHVyZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtHQ01hcC5oCmluZGV4IDFiYjNjZDViYjNkOWJlOTY3ODMxMjllOGU1YWUyMTMwZDJl
OGJmNzguLjdkMTczOWI1MWZlYzU1MjMxYzk0ZjdlYTY3Y2YxZWNiMWIyZDFiOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC01NCw5ICs1NCw3IEBAIGNs
YXNzIFdlYWtHQ01hcCA6IHByaXZhdGUgV2Vha0hhbmRsZU93bmVyIHsKICAgICB0eXBlZGVmIEhh
c2hNYXA8S2V5VHlwZSwgSGFuZGxlU2xvdCwgSGFzaEFyZywgS2V5VHJhaXRzQXJnPiBNYXBUeXBl
OwogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8TWFwcGVkVHlwZT46OkV4dGVybmFs
VHlwZSBFeHRlcm5hbFR5cGU7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRv
ciBtYXBfaXRlcmF0b3I7Ci0KIHB1YmxpYzoKLQogICAgIHN0cnVjdCBpdGVyYXRvciB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBXZWFrR0NNYXA7CiAgICAgICAgIGl0ZXJhdG9yKG1hcF9pdGVyYXRv
ciBpdGVyKQpAQCAtNzksNiArNzcsMTIgQEAgcHVibGljOgogICAgICAgICBtYXBfaXRlcmF0b3Ig
bV9pdGVyYXRvcjsKICAgICB9OwogCisgICAgc3RydWN0IEFkZFJlc3VsdCB7CisgICAgICAgIEFk
ZFJlc3VsdCh0eXBlbmFtZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0KSA6IGl0ZXIocmVzdWx0
Lml0ZXIpLCBpc05ld0tleShyZXN1bHQuaXNOZXdLZXkpIHsgfQorICAgICAgICBpdGVyYXRvciBp
dGVyOworICAgICAgICBib29sIGlzTmV3S2V5OworICAgIH07CisKICAgICBXZWFrR0NNYXAoKQog
ICAgIHsKICAgICB9CkBAIC0xMjEsMTcgKzEyNSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX21hcC5nZXQoa2V5KTsKICAgICB9CiAKLSAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlw
ZSB2YWx1ZSkKKyAgICBBZGRSZXN1bHQgYWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBwYWly
PHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwg
MCk7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBUeXBl
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIGlmIChyZXN1
bHQuaXNOZXdLZXkpIHsKICAgICAgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGdsb2JhbERhdGEu
aGVhcC5oYW5kbGVIZWFwKCktPmFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBpdGVyLmZpcnN0LT5z
ZWNvbmQgPSBzbG90OworICAgICAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IHNsb3Q7CiAg
ICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlz
LCBGaW5hbGl6ZXJDYWxsYmFjazo6ZmluYWxpemVyQ29udGV4dEZvcihrZXkpKTsKICAgICAgICAg
ICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7
CiAgICAgICAgICAgICAqc2xvdCA9IHZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBp
dGVyOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KHJlc3VsdCk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgc2V0KGl0ZXJhdG9yIGl0ZXIsIEV4dGVybmFsVHlwZSB2YWx1ZSkKQEAgLTE0NCwxMiAr
MTQ4LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCiAgICAgewotICAgICAg
ICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRk
KGtleSwgMCk7Ci0gICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIuZmlyc3QtPnNlY29uZDsK
LSAgICAgICAgaWYgKGl0ZXIuc2Vjb25kKSB7CisgICAgICAgIHR5cGVuYW1lIE1hcFR5cGU6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAgSGFuZGxlU2xvdCBz
bG90ID0gcmVzdWx0Lml0ZXItPnNlY29uZDsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0tleSkg
ewogICAgICAgICAgICAgc2xvdCA9IGdsb2JhbERhdGEuaGVhcC5oYW5kbGVIZWFwKCktPmFsbG9j
YXRlKCk7CiAgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2Vhayhz
bG90LCB0aGlzLCBrZXkpOwotICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gc2xvdDsK
KyAgICAgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBzbG90OwogICAgICAgICB9CiAgICAg
ICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7
CiAgICAgICAgICpzbG90ID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
UHJvZmlsZVRyZWVOb2RlLmgKaW5kZXggNjBkNTk5MjhhNDY3YTYxN2UyZjNhNzgxZWJlMjAwNTE1
ZTM2ZDkwMC4uMzRlNDU4MjhhOTkyNzRhNzI3NDk2OGUxMWE4ODcwZDVhYmY2MGZmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaApAQCAtNTAsOCAr
NTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NoaWxkcmVuID0gbmV3IE1hcCgpOwogICAg
IAogICAgICAgICBQcm9maWxlVHJlZU5vZGUgbmV3RW50cnk7Ci0gICAgICAgIHBhaXI8TWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3
RW50cnkpOwotICAgICAgICBQcm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgICAgIE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2hpbGRyZW4t
PmFkZChTdHJpbmcobmFtZSksIG5ld0VudHJ5KTsKKyAgICAgICAgUHJvZmlsZVRyZWVOb2RlKiBj
aGlsZEluTWFwID0gJnJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAgICAgICAgICsrY2hpbGRJbk1hcC0+
bV9jb3VudDsKICAgICAgICAgcmV0dXJuIGNoaWxkSW5NYXA7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3Vu
dGVkU2V0LmgKaW5kZXggY2FmYjI2NDllYjYyNDcxYWNjOTZmNGNmMzc4OWVjMDQ5ZDc0MDBlZS4u
M2E1MTNjNTVjNWRmNmIyNjFhNDZiOWY5MDI0MGE4MTVjMTJhNmE4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291
bnRlZFNldC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0eXBl
ZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6
aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNv
bnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIElt
cGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogICAgICAgICAKICAgICAgICAgSGFzaENvdW50
ZWRTZXQoKSB7fQogICAgICAgICAKQEAgLTU3LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIC8vIEluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFk
eSBwcmVzZW50CiAgICAgICAgIC8vIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIGFuIGlu
dGVyYXRvciB0byB0aGUgbmV3IHZhbHVlJ3MgCiAgICAgICAgIC8vIGxvY2F0aW9uLCBhbmQgYSBi
b29sIHRoYXQgaXMgdHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2FzIGFkZGVkLgotICAgICAgICBzdGQ6
OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRk
UmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlZHVj
ZXMgdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgaXQgaWYgY291bnQKICAgICAg
ICAgLy8gZ29lcyBkb3duIHRvIHplcm8sIHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgcmVt
b3ZlZC4KQEAgLTE0MiwxMCArMTQzLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSBzdGQ6OnBhaXI8dHlwZW5hbWUgSGFzaENvdW50ZWRT
ZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoQ291
bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFZhbHVlVHlw
ZSAmdmFsdWUpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQogICAgIHsKLSAg
ICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7
IAotICAgICAgICArK3Jlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBBZGRSZXN1bHQgcmVz
dWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7CisgICAgICAgICsrcmVzdWx0Lml0ZXItPnNlY29u
ZDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggYmU3
ZTllYmVkMTM3OTNiYTc4ZTBjYWZkNzM5MDViMWUwNGMzMDU3OC4uNjQ0ZDhlZTU1OTljYzYxMzVl
Mzg1ZTcxYmE0NGJhOGZlZjZhOGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVU
eXBlPiBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVU
eXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHN3
YXAoSGFzaE1hcCYpOwpAQCAtOTQsMTIgKzk1LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtleSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50
CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRo
ZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRk
UmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAg
Ly8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0
dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwg
CiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2Fz
IGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBL
ZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0
IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25z
dCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTEyMiwxMiAr
MTIzLDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFQmKTsKICAgICAgICAgLy8gICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1
ZVR5cGUmLCBjb25zdCBUJik7CiAgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5
cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFzaENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRk
KGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYsIE1hcHBl
ZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKKyAgICAgICAgQWRkUmVz
dWx0IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7
CiAKICAgICAgICAgY2xhc3MgSGFzaE1hcEtleXNQcm94eSA6IHByaXZhdGUgSGFzaE1hcCB7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTMxOSwzNCArMzIwLDM0IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5l
QWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSBtYXBwZWQp
IAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5z
bGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hGdW5jdGlvbnM+ID4oa2V5LCBtYXBwZWQpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzZXQoY29uc3QgS2V5VHlw
ZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgCiAgICAgewotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFk
ZChrZXksIG1hcHBlZCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAg
ICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0
YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAg
IE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAg
ICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXItPnNlY29uZCk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRZUEUsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9y
PgotICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJv
b2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVkUGFzc0lu
VHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFz
c2luZ0hhc2hDb2RlPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRy
YW5zbGF0b3I+ID4oa2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBw
YWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAg
IHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OmFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUg
bWFwcGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
U2V0LmgKaW5kZXggMzNjYjE0ZGFhYjY4MjY4N2YwYWU4ZTZjMmM4ZjFiMmJhZWY4YWI5Ni4uMWIz
YjJlMjg3MzM0MzliMTBiYjc1M2M5MDRkNTRmZmVjNTVmMjVjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtNTEs
NiArNTEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBp
dGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxI
YXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVm
IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAg
dm9pZCBzd2FwKEhhc2hTZXQmKTsKIApAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBpbnRlcmF0b3Ig
dG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbCB0aGF0
IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICAgICAgcGFpcjxpdGVyYXRv
ciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNv
bnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9mIGFk
ZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAg
ICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29u
dmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKQEAgLTg2LDcgKzg3LDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25z
dCBUJiwgdW5zaWduZWQgaGFzaENvZGUpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
dmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgc28gdGhhdCBjYWxsZXJz
CiAgICAgICAgIC8vIGNhbiBqdXN0IHBhc3MgdGhlIHRyYW5zbGF0b3IgYW5kIGxldCB0aGUgY29t
cGlsZXIgZGVkdWNlIFQuCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVCYpOworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gQWRkUmVzdWx0
IGFkZChjb25zdCBUJik7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7
CiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTE3NywxNCArMTc4LDE0IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxULCBVLCBW
Pjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+OjpBZGRSZXN1bHQg
SGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9pbXBsLmFkZCh2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBpbmxp
bmUgcGFpcjx0eXBlbmFtZSBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpp
dGVyYXRvciwgYm9vbD4KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0CiAgICAgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNzaW5nSGFzaENvZGU8SGFzaFNldFRyYW5zbGF0b3JBZGFw
dGVyPEhhc2hUcmFuc2xhdG9yPiA+KHZhbHVlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDA1
NzIyZDljNTU2YTc5N2I0MTg4MDcyMGQ3Y2UzMDA1N2ZiNWY2YjYuLjg5YjNmOWQ4ZGM5NmQ4NjMy
ZWJjODdmODc4ZWE2YTQ5NDIyMWMwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hU
YWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0zMzAsMTMgKzMzMCwx
OSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gbV90YWJsZVNpemU7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fa2V5Q291bnQ7IH0KIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3Qg
VmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4
dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsgfQorICAgICAgICBzdHJ1Y3QgQWRkUmVz
dWx0IHsKKyAgICAgICAgICAgIEFkZFJlc3VsdChpdGVyYXRvciBpdGVyLCBib29sIGlzTmV3S2V5
KSA6IGl0ZXIoaXRlciksIGlzTmV3S2V5KGlzTmV3S2V5KSB7IH0KKyAgICAgICAgICAgIGl0ZXJh
dG9yIGl0ZXI7CisgICAgICAgICAgICBib29sIGlzTmV3S2V5OworICAgICAgICB9OworCisgICAg
ICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElk
ZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsg
fQogCiAgICAgICAgIC8vIEEgc3BlY2lhbCB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhl
IG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8gd2l0aCBzb21lIG90
aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2Jq
ZWN0IGlzIGFscmVhZHkKICAgICAgICAgLy8gaW4gdGhlIHRhYmxlLgotICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IHBh
aXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7Ci0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFt
ZSBFeHRyYT4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQm
IGtleSwgY29uc3QgRXh0cmEmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkKGNvbnN0IFQm
IGtleSwgY29uc3QgRXh0cmEmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hh
c2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmKTsKIAogICAgICAgICBpdGVyYXRvciBm
aW5kKGNvbnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JU
eXBlPihrZXkpOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYg
a2V5KSBjb25zdCB7IHJldHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0K
QEAgLTY2NSw3ICs2NzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJh
PgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6YWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQorICAgIGlubGlu
ZSB0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OkFkZFJlc3VsdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBUJiBr
ZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFu
c2xhdG9yPihrZXkpOwogCkBAIC03MDAsNyArNzA2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtl
eSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25H
b29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAg
ICAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CkBAIC03MTEsNyArNzE3LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgq
ZW50cnkpKQogICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRy
YWN0KCplbnRyeSksIGtleSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFs
c2UpOwogICAgICAgICAgICAgfQogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgICAg
ICArK3Byb2JlQ291bnQ7CkBAIC03MzgsMTkgKzc0NCwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBwb3Np
dGlvbi4KICAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0cmFj
dCgqZW50cnkpOwogICAgICAgICAgICAgZXhwYW5kKCk7Ci0gICAgICAgICAgICBwYWlyPGl0ZXJh
dG9yLCBib29sPiBwID0gc3RkOjptYWtlX3BhaXIoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICBBU1NFUlQocC5maXJzdCAhPSBlbmQoKSk7Ci0gICAgICAgICAgICByZXR1cm4g
cDsKKyAgICAgICAgICAgIEFkZFJlc3VsdCByZXN1bHQoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7
CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXIgIT0gZW5kKCkpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50ZXJuYWxDaGVj
a1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBr
ZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpB
ZGRSZXN1bHQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25z
dCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4o
a2V5KTsKIApAQCAtNzY4LDcgKzc3NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB1bnNp
Z25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKICAgICAgICAgCiAgICAgICAgIGlmIChmb3Vu
ZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0
b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93
bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0Rl
bGV0ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldCgqZW50
cnkpOwpAQCAtNzgzLDE0ICs3ODksMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAv
LyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBhbmQgcmV0dXJuIHRoZSBuZXcgcG9zaXRpb24uCiAgICAg
ICAgICAgICBLZXlUeXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KTsK
ICAgICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4g
cCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQoZW50ZXJlZEtleSksIHRydWUpOwotICAgICAgICAgICAg
QVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkpOwotICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAg
ICAgICBBZGRSZXN1bHQgcmVzdWx0KGZpbmQoZW50ZXJlZEtleSksIHRydWUpOworICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC5pdGVyICE9IGVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgp
OwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRl
cmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgK
aW5kZXggNzk5NDY2ZmE5OGM2ZGY3ZTI1YjIwNjdjMmEyMDBmNDc5NDczYWMxMi4uYTJiYzEyY2Y1
NDc5YTQ4ZDk0MWI4MWY2MGM2NjBiZTg5YmI5ZWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTGlzdEhhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCkBAIC04
MSw2ICs4MSwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNl
dENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+
OwogCisgICAgICAgIHN0cnVjdCBBZGRSZXN1bHQgeworICAgICAgICAgICAgQWRkUmVzdWx0KGl0
ZXJhdG9yIGl0ZXIsIGJvb2wgaXNOZXdLZXkpIDogaXRlcihpdGVyKSwgaXNOZXdLZXkoaXNOZXdL
ZXkpIHsgfQorICAgICAgICAgICAgaXRlcmF0b3IgaXRlcjsKKyAgICAgICAgICAgIGJvb2wgaXNO
ZXdLZXk7CisgICAgICAgIH07CisKICAgICAgICAgTGlzdEhhc2hTZXQoKTsKICAgICAgICAgTGlz
dEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICAgICAgTGlzdEhhc2hTZXQmIG9wZXJh
dG9yPShjb25zdCBMaXN0SGFzaFNldCYpOwpAQCAtMTI0LDEwICsxMzAsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiBhZGQgaXMgYSBwYWlyIG9m
IGFuIGl0ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFu
ZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQuCi0gICAgICAg
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRk
UmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFs
dWVUeXBlJiBuZXdWYWx1ZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydEJl
Zm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBp
bnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBl
JiBuZXdWYWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbnNlcnRCZWZvcmUoaXRlcmF0b3IsIGNv
bnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYp
OwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CkBAIC02OTUsMjYgKzcwMSwyNSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBp
bmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQorICAgIHR5cGVu
YW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCiAg
ICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG1fYWxsb2Nh
dG9yLmdldCgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICBhcHBl
bmROb2RlKCpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFr
ZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgdHlwZW5h
bWUgSW1wbFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VU
cmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICBpZiAocmVzdWx0
LmlzTmV3S2V5KQorICAgICAgICAgICAgYXBwZW5kTm9kZSgqcmVzdWx0Lml0ZXIpOworICAgICAg
ICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXIpLCByZXN1bHQuaXNO
ZXdLZXkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExpc3RIYXNoU2V0PFQsIGlubGluZUNh
cGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5l
d1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6
QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3Jl
KGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQogICAgIHsKLSAgICAgICAg
cGFpcjx0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faW1wbC50
ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7
Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9y
ZShpdC5ub2RlKCksICpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKLQorICAgICAg
ICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBh
ZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7CisgICAgICAg
IGlmIChyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGl0Lm5v
ZGUoKSwgKnJlc3VsdC5pdGVyKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0
b3IoKnJlc3VsdC5pdGVyKSwgcmVzdWx0LmlzTmV3S2V5KTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFp
cjx0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBi
b29sPiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25z
dCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAg
IHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExp
c3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVl
VHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUpLCBuZXdWYWx1ZSk7IAog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaCBiL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAppbmRleCBmNDhhNTljZjYzNzAyMjY0MDQyNTIwM2M4
ZTQyZDE2YmVkOGI1MTczLi44MTk0OTI5MDU1MDU5NWViNTcyMjg5ZDhjYzVmNDk5MmQ2NWJlYzEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKKysrIGIvU291cmNl
L1dURi93dGYvUmVmUHRySGFzaE1hcC5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8
SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0
X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJl
c3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKIApAQCAtODYs
MTQgKzg3LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBi
dXQgbm90IGtleSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2
YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAg
ICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1
YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlw
ZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0
KFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IHNldChj
b25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBzZXQo
UmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAgLy8gZG9lcyBub3RoaW5n
IGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEg
cGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFu
ZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVk
Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVk
UGFzc0luVHlwZSk7IAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoUmF3S2V5VHlw
ZSwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5
cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChSYXdLZXlUeXBl
LCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBl
Jik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKFJhd0tleVR5cGUpOwpAQCAtMTA0LDggKzEwNSw4IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKFJhd0tleVR5
cGUpOyAvLyBlZmZpY2llbnQgY29tYmluYXRpb24gb2YgZ2V0IHdpdGggcmVtb3ZlCiAKICAgICBw
cml2YXRlOgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoY29uc3QgS2V5
VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwotICAgICAgICBwYWlyPGl0ZXJhdG9y
LCBib29sPiBpbmxpbmVBZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7
CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJ
blJlZmVyZW5jZVR5cGUpOworICAgICAgICBBZGRSZXN1bHQgaW5saW5lQWRkKFJhd0tleVR5cGUs
IE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwogCiAgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9p
bXBsOwogICAgIH07CkBAIC0xOTUsNTIgKzE5Niw1MiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVm
UHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxS
ZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBw
ZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkgCiAgICAgewogICAgICAgICByZXR1cm4gbV9p
bXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xhdG9yPihrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFw
PFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+
LCBVLCBWLCBXLCBYPjo6aW5saW5lQWRkKFJhd0tleVR5cGUga2V5LCBNYXBwZWRQYXNzSW5SZWZl
cmVuY2VUeXBlIG1hcHBlZCkgCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRl
IGFkZDxUcmFuc2xhdG9yPihrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4K
LSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0
b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpB
ZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnNldChjb25zdCBL
ZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAg
ICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5s
aW5lQWRkKGtleSwgbWFwcGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBo
YXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgotICAgICAg
ICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5maXJzdC0+c2Vjb25kKTsK
KyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRlci0+c2Vj
b25kKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywg
WD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBW
LCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpz
ZXQoUmF3S2V5VHlwZSBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAg
ICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7
Ci0gICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0
ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlz
dGluZyBoYXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgot
ICAgICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5maXJzdC0+c2Vj
b25kKTsKKyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRl
ci0+c2Vjb25kKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwg
ViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+
LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcs
IFg+OjphZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwg
VywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBV
LCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+
OjphZGQoUmF3S2V5VHlwZSBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCA1OWJj
NGEyOWE5ZDhkNzc1MWIyZGQxZDAzMWI4NTIzYzY1YjYzNDdkLi45YTIyZGNiY2M3ZjBhNGNmNjQz
NGExZWZhMjQxNzc5OGI0NmFiNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3Vu
dCA9IDEpCiAgICAgewotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fbWFwLmFkZChrZXksIGNvdW50KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAg
ICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gY291bnQ7CisgICAgICAgIHR5cGVuYW1l
IEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQo
a2V5LCBjb3VudCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICAgICAg
cmVzdWx0Lml0ZXItPnNlY29uZCArPSBjb3VudDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQg
bG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
V1RGVGhyZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAppbmRl
eCBlYzVkZTcyMjAwZjU3NWQ3NzRjYzIwZDkxYTkzOGU5ZDlkOWYwMjY5Li5kMGZhNzE5NTBhMTdh
NzZhYzc0MGVkZTI5N2I1Y2ZhNjUzMGU0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApA
QCAtNjMsMTAgKzYzLDEwIEBAIElkZW50aWZpZXJUYWJsZTo6fklkZW50aWZpZXJUYWJsZSgpCiAg
ICAgICAgICgqaXRlciktPnNldElzSWRlbnRpZmllcihmYWxzZSk7CiB9CiAKLXN0ZDo6cGFpcjxI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRk
KFN0cmluZ0ltcGwqIHZhbHVlKQorSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBJZGVu
dGlmaWVyVGFibGU6OmFkZChTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFz
aFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZCh2
YWx1ZSk7Ci0gICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAg
SGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1
ZSk7CisgICAgKCpyZXN1bHQuaXRlciktPnNldElzSWRlbnRpZmllcih0cnVlKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRh
LmggYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKaW5kZXggYjAyZDEwZDdjODE5MWE3
YTVmZTdiNWU3YTcyNDQyZjU2OGZkNDY3ZC4uZGJjNWJhNmFjNTRmODU4YTcyNDhiNzNjYzA5Njk3
NjlmMDlhM2FiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApAQCAtNDYsOSArNDYsOSBAQCBjbGFz
cyBJZGVudGlmaWVyVGFibGUgewogcHVibGljOgogICAgIH5JZGVudGlmaWVyVGFibGUoKTsKIAot
ICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZChT
dHJpbmdJbXBsKiB2YWx1ZSk7CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBh
ZGQoU3RyaW5nSW1wbCogdmFsdWUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFY+Ci0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4g
YWRkKFUgdmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkKFUg
dmFsdWUpOwogCiAgICAgYm9vbCByZW1vdmUoU3RyaW5nSW1wbCogcikKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggZDc3NWU3YmI5NGZmZTA2MzZkZjMzYmEyZGUz
ZWQ1YzM1YzlmOTFkYy4uMGNhNDM4NGExNzdhMTkxYWFjNmQzZjliZDg3NjNlYzU2NTcyZTIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtNzgsMTEgKzc4LDExIEBAIHN0
YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHN0cmluZ1RhYmxlKCkKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgogc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCiB7Ci0g
ICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9
IHN0cmluZ1RhYmxlKCkuYWRkPFQsIEhhc2hUcmFuc2xhdG9yPih2YWx1ZSk7CisgICAgSGFzaFNl
dDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFkZDxU
LCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXds
eS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xl
YW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICByZXR1cm4gYWRkUmVz
dWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5maXJz
dDsKKyAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3S2V5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5p
dGVyKSA6ICphZGRSZXN1bHQuaXRlcjsKIH0KIAogc3RydWN0IENTdHJpbmdUcmFuc2xhdG9yIHsK
QEAgLTMwMCw3ICszMDAsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6
YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCogcikKICAgICBpZiAoIXItPmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIAotICAgIFN0cmluZ0ltcGwqIHJlc3VsdCA9
ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5maXJzdDsKKyAgICBTdHJpbmdJbXBsKiByZXN1bHQgPSAq
c3RyaW5nVGFibGUoKS5hZGQocikuaXRlcjsKICAgICBpZiAocmVzdWx0ID09IHIpCiAgICAgICAg
IHItPnNldElzQXRvbWljKHRydWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTU4Yzk4ZDdmZjg3NDAzOGU1MTdiNjBkMTk3M2M3Mjhk
Y2ZhYjc5Li42MmNjOWJhOTQ3OTJiY2ZjMjlkMDFhODBkN2NkYTk3OWM1YjI1ZjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCiAgICAgQ29vcmRpbmF0aW9uSW5mb01hcDo6aXRlcmF0b3IgY29vcmRpbmF0aW9uSW5mb0l0
ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmZpbmQoZGJJZGVudGlmaWVyKTsKICAgICBp
ZiAoY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID09IG1fY29vcmRpbmF0aW9uSW5mb01hcC5lbmQo
KSkgewogICAgICAgICAvLyBObyBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3IgdGhpcyBEQgotICAg
ICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuYWRk
KGRiSWRlbnRpZmllciwgQ29vcmRpbmF0aW9uSW5mbygpKS5maXJzdDsKKyAgICAgICAgY29vcmRp
bmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmFkZChkYklkZW50aWZp
ZXIsIENvb3JkaW5hdGlvbkluZm8oKSkuaXRlcjsKICAgICB9CiAKICAgICBDb29yZGluYXRpb25J
bmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yLT5zZWNvbmQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3Rh
VHJhY2tlci5jcHAKaW5kZXggMmEwOTYyNzk4YmJlZjMyNTRkMDE3NTgzODU3MWJlM2I0MTI3MTY2
Ny4uMjdmYjc0ZmVlMDhiYWQ0ZWU3OGRlNjk1NmNkMGI0ZDFjMTRlNDIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVv
dGFUcmFja2VyLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFF1b3RhVHJhY2tlcjo6dXBkYXRl
RGF0YWJhc2VTaXplKAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZVNpemUpCiB7CiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGEobV9kYXRhR3VhcmQpOwotICAgIEhhc2hNYXA8U3RyaW5n
LCBTaXplTWFwPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlU2l6ZXMuYWRkKG9yaWdpbklkZW50
aWZpZXIsIFNpemVNYXAoKSkuZmlyc3Q7CisgICAgSGFzaE1hcDxTdHJpbmcsIFNpemVNYXA+Ojpp
dGVyYXRvciBpdCA9IG1fZGF0YWJhc2VTaXplcy5hZGQob3JpZ2luSWRlbnRpZmllciwgU2l6ZU1h
cCgpKS5pdGVyOwogICAgIGl0LT5zZWNvbmQuc2V0KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VTaXpl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0
SGFzaFRhYmxlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNo
VGFibGVNYXAuaAppbmRleCAyYzBlOTQ4MzZmM2M2NDcyMjIyYWI2NzJkNDMzNzc3ZjNlMWE2MDc3
Li5jYTg1MTc5MzdmNjA2MmQ0NzU3ZjBkZjg1NmNiNTQxOGQ4ZmFjNjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgSlNDOjpIYXNoVGFibGUq
LCBKU0M6Okhhc2hUYWJsZT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHN0YXRpY1RhYmxl
KTsKICAgICAgICAgaWYgKGl0ZXIgIT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4g
Jml0ZXItPnNlY29uZDsKLSAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpT
Qzo6SGFzaFRhYmxlKCpzdGF0aWNUYWJsZSkpLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIHJldHVy
biAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5p
dGVyLT5zZWNvbmQ7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMDA1MGE3MzE1N2ZkZmNiNWRlMDc2MWYzMjVmNmZk
MTVhYzAwMDc2ZC4uNWYzNDQ3ZTI0ZTlmNDk2YjlmNDFkYWRlNDJkY2RmNGM1Y2U2ZDdlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0yNTgsNyAr
MjU4LDcgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHUKIHsKICAgICBKU0RPTVN0cnVjdHVyZU1h
cCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlcygpOwogICAgIEFTU0VSVCgh
c3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsKLSAgICByZXR1cm4gc3RydWN0dXJlcy5z
ZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5maXJzdC0+c2Vjb25kLmdldCgpOwor
ICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkp
Lml0ZXItPnNlY29uZC5nZXQoKTsKIH0KIAogSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNzlhM2RhZmQwZTY0YmE1ZDhi
MGViNTdlOGU4MWU5MmNlYzg0YzNkMy4uMzc2NDEwOWMwNjg0NTU4MjFkY2UyYzVjNTczYTM1Mzdi
MTRiMGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAg
LTE0Miw4ICsxNDIsOCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICBp
ZiAoc2V0SW5saW5lQ2FjaGVkV3JhcHBlcih3b3JsZCwgZG9tT2JqZWN0LCB3cmFwcGVyKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgSlNDOjpQYXNzV2VhazxKU0RPTVdyYXBwZXI+IHBh
c3NXZWFrKCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCB3cmFwcGVyT3duZXIod29ybGQs
IGRvbU9iamVjdCksIHdyYXBwZXJDb250ZXh0KHdvcmxkLCBkb21PYmplY3QpKTsKLSAgICAgICAg
cGFpcjxET01PYmplY3RXcmFwcGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gd29ybGQt
Pm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWspOwotICAgICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgIERPTU9iamVjdFdyYXBwZXJNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSB3b3JsZC0+bV93cmFwcGVycy5hZGQoZG9tT2JqZWN0LCBwYXNz
V2Vhayk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdLZXkpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgdW5j
YWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwg
SlNET01XcmFwcGVyKiB3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3
NmQ4NTExMC4uOTg0NzY0NGQ3Y2ZhZTRmNzQxYWI4NGJjN2JjYjU5MDAxODQ5NTM2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC05NSw3
ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29u
c3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFz
czo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgY29uc3RfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBl
KCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiAgICAg
ICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkt
PmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKICAg
ICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29u
c3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygp
LmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBj
b25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3Jz
KCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRlbXApLml0ZXItPnNlY29uZC5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYzhmMTZmNWE5NjE2NWJl
OGUxM2RiMmJlYjVlYWIxNjA4MzdlOTIwYy4uY2MzZjJkMTE3MDYzN2NiNDhhMzkzN2FmZjVjNGY1
NmRlYzcxZmMzNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC04MiwxMSArODIsMTEgQEAgdm9pZCBQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQ
YWdlKiBwYWcKICAgICBBU1NFUlRfQVJHKGxpc3RlbmVyLCBsaXN0ZW5lcik7CiAgICAgQVNTRVJU
X0FSRyhwYWdlLCBwYWdlKTsKIAotICAgIHBhaXI8UGFnZUxpc3RlbmVyc01hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fcGFnZUxpc3RlbmVyc01hcC5hZGQocGFnZSwgMCk7Ci0gICAgaWYg
KHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IExpc3Rl
bmVyU2V0OworICAgIFBhZ2VMaXN0ZW5lcnNNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VM
aXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpCisgICAg
ICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBuZXcgTGlzdGVuZXJTZXQ7CiAKLSAgICBMaXN0ZW5l
clNldCogbGlzdGVuZXJzID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgTGlzdGVuZXJTZXQq
IGxpc3RlbmVycyA9IHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiAgICAgbGlzdGVuZXJzLT5hZGQobGlz
dGVuZXIpOwogCiAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZjQ5NWNl
ZGM4NjM5ZjBmZjNhYzk3Y2MzNjNjNjM3YWM0MWNkMzI1MC4uNmJjMzNiODBjOTExZjYwMDk3ZjQ3
YWZkMzc2NWM3Yjc1MzUyMmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2Ny
aXB0QnJlYQogICAgICAgICByZXR1cm4gIiI7CiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFw
OjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1
ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAg
ICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9C
cmVha3BvaW50TWFwKCkpLmZpcnN0OworICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9p
bnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXI7CiAgICAg
aWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSkp
CiAgICAgICAgIHJldHVybiAiIjsKICAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50
LmxpbmVOdW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2ZjBhODE0
ODc0MTM3ZjUyNWJjNDk1MzZlMzE0MmZhMTg4MjJlZGUuLjUyYTk5MGE1YjUwMmFiNWQ3MGI5ZGQy
Mzg5Y2E3ZDI1ZjA1N2EwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHJpdmF0
ZToKICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAgICB7
CiAgICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCi0gICAg
ICAgIHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wu
YWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CisgICAgICAgIE9iamVjdFBvb2w6OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29s
LnNpemUoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5j
ZXMKLSAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAgICBpZiAoIWFkZFJlc3VsdC5p
c05ld0tleSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0UmVmZXJlbmNlVGFnKTsKLSAgICAg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihpdGVyLmZpcnN0LT5zZWNvbmQpIDwg
bV9vYmplY3RQb29sLnNpemUoKSk7Ci0gICAgICAgICAgICB3cml0ZU9iamVjdEluZGV4KGl0ZXIu
Zmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
YWRkUmVzdWx0Lml0ZXItPnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIHdyaXRlT2JqZWN0SW5kZXgoYWRkUmVzdWx0Lml0ZXItPnNlY29uZCk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03MjYsMTAgKzcyNiwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAg
ewogICAgICAgICBVU3RyaW5nIHN0ciA9IGlkZW50LnVzdHJpbmcoKTsKLSAgICAgICAgcGFpcjxT
dHJpbmdDb25zdGFudFBvb2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9jb25zdGFudFBvb2wu
YWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29sLnNpemUoKSk7Ci0gICAgICAgIGlmICghaXRl
ci5zZWNvbmQpIHsKKyAgICAgICAgU3RyaW5nQ29uc3RhbnRQb29sOjpBZGRSZXN1bHQgYWRkUmVz
dWx0ID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29sLnNpemUo
KSk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5KSB7CiAgICAgICAgICAgICB3cml0
ZShTdHJpbmdQb29sVGFnKTsKLSAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoaXRlci5maXJz
dC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoYWRkUmVzdWx0Lml0ZXIt
PnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAppbmRleCA2ZmRmMzczNDJlMDMwY2Q2ZWVkYTVm
NzEwYWI5MmVhOTE5M2E0MGQwLi5kMTg3YWU4ZTVjNmY5MTQ1MGE2MzliMTljYzk1Y2NhZTQ0M2Rh
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcApAQCAtMTYz
LDcgKzE2Myw3IEBAIE5QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpdGVyID0gc3RhdGljVjhOUE9iamVjdE1hcCgp
LT5zZXQodjhPYmplY3RIYXNoLCBWOE5QT2JqZWN0VmVjdG9yKCkpLmZpcnN0OyAKKyAgICAgICAg
aXRlciA9IHN0YXRpY1Y4TlBPYmplY3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFzaCwgVjhOUE9iamVj
dFZlY3RvcigpKS5pdGVyOwogICAgIH0KIAogICAgIFY4TlBPYmplY3QqIHY4bnBPYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdChucHAsICZWOE5Q
T2JqZWN0Q2xhc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlm
aWVyUmVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAppbmRl
eCBmZWQ0N2NhNWVlZTg2NjYwMTYyNDU4ZTNlMTA0ZjQ2MTJmMWRmOGZmLi4wNzhhMzE0ZjIwNzRk
OGEzYWVhMTY0YTMyYTc2NTljZDI4NTJlZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50
aWZpZXJSZXAuY3BwCkBAIC02NywxNSArNjcsMTUgQEAgSWRlbnRpZmllclJlcCogSWRlbnRpZmll
clJlcDo6Z2V0KGludCBpbnRJRCkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAgICAgfQog
ICAgIAotICAgIHBhaXI8SW50SWRlbnRpZmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IGludElkZW50aWZpZXJNYXAoKS5hZGQoaW50SUQsIDApOyAKLSAgICBpZiAocmVzdWx0LnNlY29u
ZCkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJlcChpbnRJRCk7CisgICAgSW50SWRl
bnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGludElkZW50aWZpZXJNYXAoKS5hZGQoaW50
SUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1
bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IG5ldyBJZGVu
dGlmaWVyUmVwKGludElEKTsKICAgICAgICAgCi0gICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQo
cmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3Vs
dC5pdGVyLT5zZWNvbmQpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5z
ZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQ7CiB9CiAKIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXAqPiBTdHJpbmdJZGVudGlmaWVy
TWFwOwpAQCAtOTMsMTUgKzkzLDE1IEBAIElkZW50aWZpZXJSZXAqIElkZW50aWZpZXJSZXA6Omdl
dChjb25zdCBjaGFyKiBuYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgCiAgICAgVVN0cmluZyBz
dHJpbmcgPSBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhuYW1lLCBzdHJsZW4obmFtZSkpKTsKLSAgICBwYWlyPFN0cmluZ0lkZW50aWZpZXJNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBzdHJpbmdJZGVudGlmaWVyTWFwKCkuYWRkKHN0cmluZy5p
bXBsKCksIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVz
dWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJ
ZGVudGlmaWVyUmVwKG5hbWUpOworICAgIFN0cmluZ0lkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBzdHJpbmdJZGVudGlmaWVyTWFwKCkuYWRkKHN0cmluZy5pbXBsKCksIDApOworICAg
IGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlci0+c2Vj
b25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKG5h
bWUpOwogICAgICAgICAKLSAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuZmlyc3Qt
PnNlY29uZCk7CisgICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXItPnNlY29u
ZCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBy
ZXR1cm4gcmVzdWx0Lml0ZXItPnNlY29uZDsKIH0KIAogYm9vbCBJZGVudGlmaWVyUmVwOjppc1Zh
bGlkKElkZW50aWZpZXJSZXAqIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAppbmRleCAyY2JlOTIzZjVkMDBhMjEyYmE2OTA0YWJiYjY0MTFmOTVlMzA1NDMxLi4z
ODg4OWU3OWNiMTU2ZjBlNzhmODM4ZTAxNTllNDMyOWY5YTBhNDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICBI
YXNoTWFwPFJvb3RPYmplY3QqLCBKU1RvTlBPYmplY3RNYXA+OjppdGVyYXRvciBpdGVyID0gbV9t
YXAuZmluZChyb290T2JqZWN0KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpIHsK
ICAgICAgICAgICAgIHJvb3RPYmplY3QtPmFkZEludmFsaWRhdGlvbkNhbGxiYWNrKCZtX2ludmFs
aWRhdGlvbkNhbGxiYWNrKTsKLSAgICAgICAgICAgIGl0ZXIgPSBtX21hcC5hZGQocm9vdE9iamVj
dCwgSlNUb05QT2JqZWN0TWFwKCkpLmZpcnN0OworICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFk
ZChyb290T2JqZWN0LCBKU1RvTlBPYmplY3RNYXAoKSkuaXRlcjsKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgPT0gaXRlci0+c2Vjb25kLmVu
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggYjk4OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4u
ZjZmM2Q0YjNhMmIxN2MxMThlZTI5YzkxMWNjYjc2Y2M5NmYyMjYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyNDcs
NyArMTI0Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1
ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwcm9wCiBzdGF0aWMgdm9pZCBsb2dVbmlt
cGxlbWVudGVkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJRCkKIHsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEhhc2hTZXQ8aW50PiwgcHJvcGVydHlJRFNldCwgKCkpOwotICAgIGlmICghcHJvcGVy
dHlJRFNldC5hZGQocHJvcGVydHlJRCkuc2Vjb25kKQorICAgIGlmICghcHJvcGVydHlJRFNldC5h
ZGQocHJvcGVydHlJRCkuaXNOZXdLZXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExPR19FUlJP
UigiV2ViS2l0IGRvZXMgbm90IHlldCBpbXBsZW1lbnQgZ2V0Q29tcHV0ZWRTdHlsZSBmb3IgJyVz
Jy4iLCBnZXRQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJ
RCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGUzNjcz
NWFmYjZiMTczNDcxNzA4NjdlNzQ4NDE3ZDdlM2Q2NzJlNGIuLjNlOTBhNTNlOTcyZTNkMjM1ZTdh
NWQ2NGFhYmQwMGFmMDk0YzIwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNv
dXJjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpCiAgICAg
dW5zaWduZWQgaGFzaEtleSA9IChmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSAr
IDEpIDw8IDYgfCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCkgPDwgNAogICAgICAgICAg
ICAgICAgICAgICAgICB8IChmb250RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCkgPT0gVGV4
dE9yaWVudGF0aW9uVXByaWdodCA/IDggOiAwKSB8IChmb250RGVzY3JpcHRpb24ub3JpZW50YXRp
b24oKSA9PSBWZXJ0aWNhbCA/IDQgOiAwKSB8IChzeW50aGV0aWNCb2xkID8gMiA6IDApIHwgKHN5
bnRoZXRpY0l0YWxpYyA/IDEgOiAwKTsKIAotICAgIFNpbXBsZUZvbnREYXRhKiYgY2FjaGVkRGF0
YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBT
aW1wbGVGb250RGF0YSomIGNhY2hlZERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXks
IDApLml0ZXItPnNlY29uZDsKICAgICBpZiAoY2FjaGVkRGF0YSkKICAgICAgICAgcmV0dXJuIGNh
Y2hlZERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNmQy
MmZkY2NkMGQ1NzlkMDhjNGE2NWMyZTZlNWZmYmJiNWEyNGZhNS4uZTBhNzM5YWMwZjlhZDM3ZWE3
MDcwMWZlZTY1Y2IzM2I0MTc2ZGRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZh
Y2VSdWxlKGNvbnN0IENTU0ZvbnRGYWNlUnVsZSogZm9udEZhY2VSdWxlKQogICAgICAgICBpZiAo
ZmFtaWx5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBP
d25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBt
X2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICAg
ICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4gPiYgZmFtaWx5Rm9udEZhY2Vz
ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAg
ICAgICAgaWYgKCFmYW1pbHlGb250RmFjZXMpIHsKICAgICAgICAgICAgIGZhbWlseUZvbnRGYWNl
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+KTsKIApAQCAtNDg3
LDEzICs0ODcsMTMgQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICAgICAgcmV0dXJuIGZv
bnREYXRhRm9yR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWls
eU5hbWUpOwogICAgIH0KIAotICAgIE93blB0cjxIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NT
U2VnbWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9IG1fZm9udHMu
YWRkKGZhbWlseSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SGFzaE1hcDx1
bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21lbnRlZEZvbnRG
YWNlQ2FjaGUgPSBtX2ZvbnRzLmFkZChmYW1pbHksIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAg
ICBpZiAoIXNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUpCiAgICAgICAgIHNlZ21lbnRlZEZvbnRGYWNl
Q2FjaGUgPSBhZG9wdFB0cihuZXcgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRl
ZEZvbnRGYWNlPiA+KTsKIAogICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2sgPSBmb250RGVz
Y3JpcHRpb24udHJhaXRzTWFzaygpOwogCi0gICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNl
PiYgZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5maXJz
dC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4mIGZhY2UgPSBzZWdt
ZW50ZWRGb250RmFjZUNhY2hlLT5hZGQodHJhaXRzTWFzaywgMCkuaXRlci0+c2Vjb25kOwogICAg
IGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0gQ1NTU2VnbWVudGVkRm9udEZhY2U6OmNyZWF0
ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZv
bnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAK
aW5kZXggZjQ2MmMyNGM0ZDY1NzU2NWIzNmUwMzI5ZWY1YWU0N2Q4YzNjZjY4MC4uMDY3MWMzYTkx
YjhjNzI1YmY0ZWFmM2ExZGRmNGZmODZlMTBlMmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZvbnREYXRhKiBDU1NT
ZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpCiAgICAgRm9udFRyYWl0c01hc2sgZGVzaXJlZFRyYWl0c01hc2sgPSBmb250RGVz
Y3JpcHRpb24udHJhaXRzTWFzaygpOwogICAgIHVuc2lnbmVkIGhhc2hLZXkgPSAoKGZvbnREZXNj
cmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgKEZvbnRUcmFpdHNNYXNrV2lkdGgg
KyAxKSkgfCAoKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsID8gMSA6
IDApIDw8IEZvbnRUcmFpdHNNYXNrV2lkdGgpIHwgZGVzaXJlZFRyYWl0c01hc2s7CiAKLSAgICBT
ZWdtZW50ZWRGb250RGF0YSomIGZvbnREYXRhID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5
LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNlZ21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBt
X2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXksIDApLml0ZXItPnNlY29uZDsKICAgICBpZiAoZm9u
dERhdGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCAzMWE4N2FmMGMzYjM0ZjhlNjZmNzQ4ZmEx
MTZmZGIxN2U0NTQ3ZDMxLi5iNzJkY2FmYmJmNWJjODg5YTVlNGI1ZDZhMThhMjNhODM3MTljNDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAt
MTAwNCw3ICsxMDA0LDcgQEAgcHVibGljOgogICAgICAgICB0eXBlZGVmIENvdW50ZXJEaXJlY3Rp
dmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAgICAgICBJdGVyYXRvciBlbmQgPSBwYXJlbnRN
YXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBwYXJlbnRNYXAuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0
aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0aXZlcygpKS5maXJzdC0+c2Vj
b25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRk
KGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlci0+c2Vjb25kOwogICAgICAgICAg
ICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgewogICAgICAgICAgICAgICAgIGRpcmVj
dGl2ZXMubV9yZXNldCA9IGl0LT5zZWNvbmQubV9yZXNldDsKICAgICAgICAgICAgICAgICBkaXJl
Y3RpdmVzLm1fcmVzZXRWYWx1ZSA9IGl0LT5zZWNvbmQubV9yZXNldFZhbHVlOwpAQCAtMTA1Miw3
ICsxMDUyLDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgaWRlbnRpZmll
ciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSktPmdldFN0
cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBpbnQgdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHBhaXItPnNlY29uZCgpKS0+Z2V0SW50VmFsdWUoKTsKLSAgICAgICAgICAg
IENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpZGVudGlmaWVyLmltcGwo
KSwgQ291bnRlckRpcmVjdGl2ZXMoKSkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIENvdW50
ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgQ291
bnRlckRpcmVjdGl2ZXMoKSkuaXRlci0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKGNvdW50ZXJC
ZWhhdmlvciA9PSBSZXNldCkgewogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSB2YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCAxOTYxZDUyNjY5NTYy
M2FjYTZjMTc0N2E1MzQ0YTllMmIwZjNjOGRmLi4xNGUxMGNiM2NiY2FkZTM4ZGIwMzljNTJlYjNi
Zjg4NTgzN2U3MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBA
IC00OTYsMTAgKzQ5NiwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGVuZEF1dGhvclN0
eWxlc2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UgogI2lmIEVOQUJMRShT
VFlMRV9TQ09QRUQpCiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gZGV0ZXJt
aW5lU2NvcGUoY3NzU2hlZXQpOwogICAgICAgICBpZiAoc2NvcGUpIHsKLSAgICAgICAgICAgIHBh
aXI8U2NvcGVkUnVsZVNldE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fc2NvcGVk
QXV0aG9yU3R5bGVzLmFkZChzY29wZSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBpZiAoYWRkUmVz
dWx0LnNlY29uZCkKLSAgICAgICAgICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFk
b3B0UHRyKG5ldyBSdWxlU2V0KCkpOwotICAgICAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNv
bmQtPmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1NoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsK
KyAgICAgICAgICAgIFNjb3BlZFJ1bGVTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX3Nj
b3BlZEF1dGhvclN0eWxlcy5hZGQoc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlci0+c2Vjb25k
ID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlci0+
c2Vjb25kLT5hZGRSdWxlc0Zyb21TaGVldChjc3NTaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29w
ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMzczLDcg
KzIzNzMsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBr
ZXksIEF0b21SdWxlTWFwJiBtYXAsIGNvbnN0IFJ1bGVEYQogewogICAgIGlmICgha2V5KQogICAg
ICAgICByZXR1cm47Ci0gICAgT3duUHRyPFZlY3RvcjxSdWxlRGF0YT4gPiYgcnVsZXMgPSBtYXAu
YWRkKGtleSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPFJ1bGVE
YXRhPiA+JiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAgICAg
aWYgKCFydWxlcykKICAgICAgICAgcnVsZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJ1bGVEYXRh
Pik7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBv
b2wuY3BwCmluZGV4IGM0NmM3MDQ3YzUwMGU0YjI4M2YzZDdlYzU4NGJkOWI4ZTkzNDZlZWEuLmY2
OTgzY2EzMWY2ZjFjOTM3MTlhMmVjZWRkNmZlM2QzOWQ5ZTE4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZVBvb2wuY3BwCkBAIC01NSwxMCArNTUsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoaW50IGlkZW50KQog
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQp
OwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8
SWRlbnRpZmllclZhbHVlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1faWRlbnRpZmll
clZhbHVlQ2FjaGUuYWRkKGlkZW50LCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25k
KQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoaWRlbnQpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAg
IElkZW50aWZpZXJWYWx1ZUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBtX2lkZW50aWZpZXJWYWx1
ZUNhY2hlLmFkZChpZGVudCwgZHVtbXlWYWx1ZSk7CisgICAgaWYgKGVudHJ5LmlzTmV3S2V5KQor
ICAgICAgICBlbnRyeS5pdGVyLT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihpZGVudCk7CisgICAgcmV0dXJuIGVudHJ5Lml0ZXItPnNlY29uZDsKIH0KIAogUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVl
KHVuc2lnbmVkIHJnYlZhbHVlKQpAQCAtNzgsMTAgKzc4LDEwIEBAIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JW
YWx1ZSkKICAgICAgICAgbV9jb2xvclZhbHVlQ2FjaGUuY2xlYXIoKTsKIAogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPENvbG9yVmFsdWVDYWNoZTo6
aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBk
dW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+
c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKLSAgICBy
ZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBDb2xvclZhbHVlQ2FjaGU6OkFkZFJlc3Vs
dCBlbnRyeSA9IG1fY29sb3JWYWx1ZUNhY2hlLmFkZChyZ2JWYWx1ZSwgZHVtbXlWYWx1ZSk7Cisg
ICAgaWYgKGVudHJ5LmlzTmV3S2V5KQorICAgICAgICBlbnRyeS5pdGVyLT5zZWNvbmQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOworICAgIHJldHVybiBlbnRyeS5p
dGVyLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzIHR5cGUpCkBAIC0xMTcsMTUgKzExNywxNSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aQog
ICAgIH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBw
YWlyPEludGVnZXJWYWx1ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBjYWNoZS0+YWRk
KGludFZhbHVlLCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBl
bnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlw
ZSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSW50ZWdlclZhbHVlQ2Fj
aGU6OkFkZFJlc3VsdCBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFsdWUsIGR1bW15VmFsdWUpOwor
ICAgIGlmIChlbnRyeS5pc05ld0tleSkKKyAgICAgICAgZW50cnkuaXRlci0+c2Vjb25kID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgcmV0dXJuIGVudHJ5Lml0
ZXItPnNlY29uZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQ
b29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQogewot
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVD
YWNoZS5hZGQoZmFtaWx5TmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+JiB2YWx1ZSA9IG1fZm9udEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5h
bWUsIDApLml0ZXItPnNlY29uZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICB2YWx1ZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZmFtaWx5TmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpOwogICAgIHJldHVybiB2YWx1ZTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBQYXNzUmVm
UHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKGNvbnN0
IEF0b21pY1N0cmluZyYgcwogICAgIGlmIChtX2ZvbnRGYWNlVmFsdWVDYWNoZS5zaXplKCkgPiBt
YXhpbXVtRm9udEZhY2VDYWNoZVNpemUpCiAgICAgICAgIG1fZm9udEZhY2VWYWx1ZUNhY2hlLmNs
ZWFyKCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiYgdmFsdWUgPSBtX2ZvbnRGYWNlVmFs
dWVDYWNoZS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+JiB2YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDApLml0ZXIt
PnNlY29uZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICB2YWx1ZSA9IENTU1BhcnNlcjo6cGFy
c2VGb250RmFjZVZhbHVlKHN0cmluZywgY29udGV4dFN0eWxlU2hlZXQpOwogICAgIHJldHVybiB2
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAppbmRleCA0
NzBkYTJhZDVjNzNiMTc5MmFlNjIzZDk0ODI2OGI4ZDY1NWU2YzU4Li41YzQyZWY3MDgxODcxYTVi
ZDIxYzUxOWJkZDk4MGEwNGVlODgyNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRS
YWRpb0J1dHRvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgUmFkaW9CdXR0b25Hcm91cDo6
c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCiB2b2lkIFJhZGlvQnV0
dG9uR3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBidXR0b24pCiB7CiAgICAgQVNTRVJUKGJ1
dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoIW1fbWVtYmVycy5hZGQoYnV0dG9uKS5z
ZWNvbmQpCisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1dHRvbikuaXNOZXdLZXkpCiAgICAgICAg
IHJldHVybjsKICAgICBib29sIGdyb3VwV2FzVmFsaWQgPSBpc1ZhbGlkKCk7CiAgICAgaWYgKGJ1
dHRvbi0+cmVxdWlyZWQoKSkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIENoZWNrZWRSYWRpb0J1
dHRvbnM6OmFkZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghbV9u
YW1lVG9Hcm91cE1hcCkKICAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IGFkb3B0UHRyKG5ldyBO
YW1lVG9Hcm91cE1hcCk7CiAKLSAgICBPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4mIGdyb3VwID0g
bV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5pbXBsKCksIFBhc3NPd25QdHI8
UmFkaW9CdXR0b25Hcm91cD4oKSkuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmFkaW9CdXR0
b25Hcm91cD4mIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5p
bXBsKCksIFBhc3NPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4oKSkuaXRlci0+c2Vjb25kOwogICAg
IGlmICghZ3JvdXApCiAgICAgICAgIGdyb3VwID0gUmFkaW9CdXR0b25Hcm91cDo6Y3JlYXRlKCk7
CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExp
c3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBjYmFhYTRlZmVjMDE3YjM2MjJiNjg0OTRjZGU0ZjE5
MzFjY2FiZDhmLi5jZjA0YzVlYzYzZjQ0YTI0MDNkOWNiN2Q5NzMzNGMyOWFlMDIzYjA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC0yMTEs
OSArMjExLDkgQEAgdm9pZCBDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxh
dGlvblJvdXRlcjo6d2lsbFJlbW92ZUNoaWxkKE5vZGUqIHQKIAogdm9pZCBDaGlsZExpc3RNdXRh
dGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xl
dmVsKE5vZGUqIHRhcmdldCkKIHsKLSAgICBwYWlyPFNjb3BpbmdMZXZlbE1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fc2NvcGluZ0xldmVscy5hZGQodGFyZ2V0LCAxKTsKLSAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgKysocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAg
IFNjb3BpbmdMZXZlbE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fc2NvcGluZ0xldmVscy5hZGQo
dGFyZ2V0LCAxKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkgeworICAgICAgICArKyhyZXN1
bHQuaXRlci0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggOTZmOWNjOTlmYzYxYmZhNjY4ZGIzNDU2YTY1YjZkYmQ3OThkMzI4Yy4u
NzQ0ZDY5ZDczNjI5YmNmZDc0OWFhNjdlM2EyYTQwMjQzMzMwOGE4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC00NTIxLDcgKzQ1MjEsNyBAQCBIVE1MQWxsQ29sbGVjdGlvbiogRG9jdW1l
bnQ6OmFsbCgpCiAKIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlv
bj4mIGNvbGxlY3Rpb24gPSBtX3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmlt
cGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0
aW9uPiYgY29sbGVjdGlvbiA9IG1fd2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUu
aW1wbCgpLCBudWxscHRyKS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFjb2xsZWN0aW9uKQogICAg
ICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVhdGUodGhpcywgV2luZG93
TmFtZWRJdGVtcywgbmFtZSk7CiAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0KCk7CkBAIC00NTI5
LDcgKzQ1MjksNyBAQCBIVE1MQ29sbGVjdGlvbiogRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogCiBIVE1MQ29sbGVjdGlvbiogRG9jdW1lbnQ6OmRv
Y3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgT3duUHRy
PEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX2RvY3VtZW50TmFtZWRJdGVtQ29s
bGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93
blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+JiBjb2xsZWN0aW9uID0gbV9kb2N1bWVudE5hbWVkSXRl
bUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAg
IGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxOYW1lQ29sbGVjdGlv
bjo6Y3JlYXRlKHRoaXMsIERvY3VtZW50TmFtZWRJdGVtcywgbmFtZSk7CiAgICAgcmV0dXJuIGNv
bGxlY3Rpb24uZ2V0KCk7CkBAIC00OTIyLDcgKzQ5MjIsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0KiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0CiAKIEhUTUxDYW52YXNFbGVtZW50KiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgZWxl
bWVudCA9IG1fY3NzQ2FudmFzRWxlbWVudHMuYWRkKG5hbWUsIDApLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgZWxlbWVudCA9IG1fY3NzQ2FudmFzRWxlbWVu
dHMuYWRkKG5hbWUsIDApLml0ZXItPnNlY29uZDsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IGVsZW1lbnQgPSBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBl
bGVtZW50LmdldCgpOwpAQCAtNTcyNSwxMiArNTcyNSwxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBEb2N1bWVudDo6Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBlTmFtZXMpCiAgICAgLy8gSW4g
dGhpcyBjYXNlIHdlIG5lZWQgdG8gY3JlYXRlIGFuIHVuaXF1ZSBzdHJpbmcgaWRlbnRpZmllciB0
byBtYXAgc3VjaCByZXF1ZXN0IGluIHRoZSBjYWNoZS4KICAgICBTdHJpbmcgbG9jYWxUeXBlTmFt
ZXMgPSB0eXBlTmFtZXMuaXNOdWxsKCkgPyBTdHJpbmcoImh0dHA6Ly93ZWJraXQub3JnL21pY3Jv
ZGF0YS91bmRlZmluZWRJdGVtVHlwZSIpIDogdHlwZU5hbWVzOwogCi0gICAgcGFpcjxOb2RlTGlz
dHNOb2RlRGF0YTo6TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG5vZGVMaXN0cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1l
cywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVEYXRh
OjpNaWNyb0RhdGFJdGVtTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbm9kZUxpc3RzLT5t
X21pY3JvRGF0YUl0ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsKKyAgICBpZiAo
IXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJl
c3VsdC5pdGVyLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPE1pY3JvRGF0YUl0ZW1MaXN0PiBsaXN0
ID0gTWljcm9EYXRhSXRlbUxpc3Q6OmNyZWF0ZSh0aGlzLCB0eXBlTmFtZXMpOwotICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0g
bGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggNWI4OTliM2Y1NzhhMjc0Mzk4MjQ4
NTk4YjlkMjlhZDk4OGYwMDM2ZS4uOGQyYTBhMjVlZDg5NDIyZjFmYjA1N2Y1NDE4MTVlNmQxYzNm
NmVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgYm9vbCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGV2
ZW50LT50YXJnZXQoKSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChl
dmVudCkuc2Vjb25kOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZl
bnQpLmlzTmV3S2V5OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8g
SXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KICAgICAKICAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFz
c1JlZlB0cjxOb2RlPiB0YXJnZXQsIFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQoKSkuc2Vjb25k
KQorICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQo
KSkuaXNOZXdLZXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNjcm9sbEV2ZW50LT5zZXRUYXJn
ZXQodGFyZ2V0KTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6
cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpCiAKICAgICAvLyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdo
ZXJlIHdlIHNob3VsZCBzdG9wLgogICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuY29udGFpbnMo
MCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoMCkuc2Vjb25kOwor
ICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoMCkuaXNOZXdLZXk7CiAgICAg
QVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJdCBzaG91bGQgbm90IGhhdmUg
YWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgogCiAgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1
ZT4gcHJvdGVjdG9yKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFw
LmNwcAppbmRleCBiY2IyM2I0OTYyZjY0NjZiYjYxYjhhZWJhZmE0MDVmZWU4OGU5MzAzLi40YzNh
M2RkMmNjYjYyZGYxNGRmN2U3YzI4YTI2MzdkNzBkMDNhYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcApAQCAtNjksMTQgKzY5LDE0IEBAIHZvaWQgRG9jdW1l
bnRPcmRlcmVkTWFwOjphZGQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50
KQogICAgIGlmICghbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoa2V5KSkgewogICAgICAgICAv
LyBGYXN0IHBhdGguIFRoZSBrZXkgaXMgbm90IGFscmVhZHkgaW4gbV9kdXBsaWNhdGVDb3VudHMs
IHNvIHdlIGFzc3VtZSB0aGF0IGl0J3MKICAgICAgICAgLy8gYWxzbyBub3QgYWxyZWFkeSBpbiBt
X21hcCBhbmQgdHJ5IHRvIGFkZCBpdC4gSWYgdGhhdCBhZGQgc3VjY2VlZHMsIHdlJ3JlIGRvbmUu
Ci0gICAgICAgIHBhaXI8TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9tYXAuYWRk
KGtleSwgZWxlbWVudCk7Ci0gICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQorICAgICAgICBN
YXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBlbGVtZW50KTsKKyAgICAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0tleSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAvLyBUaGUgYWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2FjaGVkIGluIG1f
bWFwLgogICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtl
eS4gUmVtb3ZlIHRoZSBtX21hcAogICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkgc28gZ2V0
IHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgotICAgICAgICBtX21hcC5y
ZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5p
dGVyKTsKICAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJl
bW92ZSB0aGUgbV9tYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAppbmRl
eCA3NzRlNjY1NzRhNmJjYzFkZWNmYTk2Njk2M2RiYTk2MGFhOTljNDQ5Li5lNmY4MjBmMDkxYmRj
ZDIyMmM2OGM1N2ViZWI0NzI5NThhYjk3NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwCkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6
OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bgogICAgIH0KIAogICAgIGlmIChtX2hhc2hNYXApIHsKLSAgICAgICAgcGFpcjxFdmVudExpc3Rl
bmVySGFzaE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faGFzaE1hcC0+YWRkKGV2ZW50
VHlwZSwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgRXZlbnRMaXN0ZW5lclZlY3Rvcik7
CisgICAgICAgIEV2ZW50TGlzdGVuZXJIYXNoTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9oYXNo
TWFwLT5hZGQoZXZlbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0tl
eSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgRXZlbnRM
aXN0ZW5lclZlY3Rvcik7CiAKLSAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IocmVz
dWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAgICAg
cmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IocmVzdWx0Lml0ZXItPnNlY29uZC5nZXQoKSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIGlmICghbV9zaW5nbGVFdmVudExpc3Rl
bmVyVmVjdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNTM0MGNiNGUyNDYyYjg2YjUwYTJlNWY2
ODE2OTk0MjJhM2RlMmEzZi4uMjRjNTU1ZWRlMWY1OGFhNjY5MDRkYmU1ZTE1OWFiZmQ4OTBlMGVk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTgxLDkgKzE4MSw5IEBAIHZvaWQgTm9kZTo6ZHVtcFN0
YXRpc3RpY3MoKQogCiAgICAgICAgICAgICAgICAgLy8gVGFnIHN0YXRzCiAgICAgICAgICAgICAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAg
ICAgICAgICAgICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+OjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gcGVyVGFnQ291bnQuYWRkKGVsZW1lbnQtPnRhZ05hbWUoKSwgMSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCsrOworICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gcGVyVGFnQ291bnQuYWRkKGVsZW1lbnQtPnRhZ05hbWUoKSwg
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQrKzsKIAogICAgICAgICAgICAgICAgIGlmIChFbGVt
ZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IGVsZW1lbnQtPmF0dHJpYnV0ZURhdGEo
KSkgewogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzICs9IGF0dHJpYnV0ZURhdGEtPmxl
bmd0aCgpOwpAQCAtMTYwMCwxMiArMTYwMCwxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIAog
ICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWVBdG9tID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxp
c3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBl
bnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNo
ZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAg
ICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwor
ICAgIE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0
ID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX3RhZ05vZGVMaXN0
Q2FjaGUuYWRkKGxvY2FsTmFtZUF0b20sIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQor
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXItPnNlY29u
ZCk7CiAKICAgICBSZWZQdHI8VGFnTm9kZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRl
KHRoaXMsIHN0YXJBdG9tLCBsb2NhbE5hbWVBdG9tKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOyAgIAogfQogCkBAIC0xNjIzLDM2ICsxNjIzLDM2IEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVCiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRv
bSA9IG5hbWU7CiAKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hl
TlM6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9k
ZUxpc3RDYWNoZU5TOjpBZGRSZXN1bHQgcmVzdWx0CiAgICAgICAgID0gZW5zdXJlUmFyZURhdGEo
KS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlm
aWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDAp
OwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFn
Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tl
eSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5pdGVyLT5z
ZWNvbmQpOwogCiAgICAgUmVmUHRyPFRhZ05vZGVMaXN0PiBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNy
ZWF0ZSh0aGlzLCBuYW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQo
KTsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlz
dC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRz
QnlOYW1lKGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpCiB7Ci0gICAgcGFpcjxOb2RlTGlzdHNO
b2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBlbnN1
cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbmFtZU5vZGVMaXN0Q2FjaGUu
YWRkKGVsZW1lbnROYW1lLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJl
dHVybiBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9k
ZUxpc3RzTm9kZURhdGE6Ok5hbWVOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZW5z
dXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX25hbWVOb2RlTGlzdENhY2hl
LmFkZChlbGVtZW50TmFtZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlci0+c2Vjb25kKTsKIAogICAg
IFJlZlB0cjxOYW1lTm9kZUxpc3Q+IGxpc3QgPSBOYW1lTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBl
bGVtZW50TmFtZSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAg
IHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeUNsYXNz
TmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpCiB7Ci0gICAgcGFpcjxOb2RlTGlzdHNOb2Rl
RGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0CisgICAgTm9k
ZUxpc3RzTm9kZURhdGE6OkNsYXNzTm9kZUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdAogICAg
ICAgICA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9jbGFzc05v
ZGVMaXN0Q2FjaGUuYWRkKGNsYXNzTmFtZXMsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkK
LSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+KHJlc3VsdC5pdGVyLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPENsYXNzTm9kZUxp
c3Q+IGxpc3QgPSBDbGFzc05vZGVMaXN0OjpjcmVhdGUodGhpcywgY2xhc3NOYW1lcyk7Ci0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyLT5zZWNv
bmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIApAQCAtMjU3
OSw5ICsyNTc5LDkgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRh
dGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogICAgICAgICAgICAgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gcmVnaXN0cnktPmF0KGkpLmdl
dCgpOwogICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxkUmVjZWl2ZU11dGF0aW9u
RnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAgICAgICAgICAgIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucyA9IHJlZ2lzdHJhdGlvbi0+
ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNoTWFwPFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwg
ZGVsaXZlcnlPcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9u
czsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRh
dGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQgPSBvYnNlcnZlcnMu
YWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXItPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CiAKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjU5Miw5ICsyNTkyLDkgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNl
cnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogICAgICAg
ICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gKml0ZXI7
CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9t
KHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgTXV0YXRpb25S
ZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxp
dmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hNYXA8V2ViS2l0TXV0YXRp
b25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxp
dmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwor
ICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG9ic2VydmVycy5hZGQo
cmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOworICAgICAgICAgICAg
ICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRl
ci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAppbmRleCBhNzQyNjI5NWVmMDY0
ZWJlOWMwZmFkZWYwZjY3MDFkNTE2NThkYTNlLi5jOGVhMGJmYWNkNzRhZGNhMGNhMGUyZGUwYWZm
ZWIwN2E4MjMyNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCkBAIC01Niw5
ICs1Niw5IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHAs
IGNvbnN0IEF0b21pY1N0cmluZyYgbCwgY29uc3QgQXRvCiAgICAgaWYgKCFnTmFtZUNhY2hlKQog
ICAgICAgICBnTmFtZUNhY2hlID0gbmV3IFFOYW1lU2V0OwogICAgIFF1YWxpZmllZE5hbWVDb21w
b25lbnRzIGNvbXBvbmVudHMgPSB7IHAuaW1wbCgpLCBsLmltcGwoKSwgbi5pc0VtcHR5KCkgPyBu
dWxsQXRvbS5pbXBsKCkgOiBuLmltcGwoKSB9OwotICAgIHBhaXI8UU5hbWVTZXQ6Oml0ZXJhdG9y
LCBib29sPiBhZGRSZXN1bHQgPSBnTmFtZUNhY2hlLT5hZGQ8UXVhbGlmaWVkTmFtZUNvbXBvbmVu
dHMsIFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I+KGNvbXBvbmVudHMpOwotICAgIG1faW1wbCA9
ICphZGRSZXN1bHQuZmlyc3Q7ICAgIAotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICBR
TmFtZVNldDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdOYW1lQ2FjaGUtPmFkZDxRdWFsaWZpZWRO
YW1lQ29tcG9uZW50cywgUU5hbWVDb21wb25lbnRzVHJhbnNsYXRvcj4oY29tcG9uZW50cyk7Cisg
ICAgbV9pbXBsID0gKmFkZFJlc3VsdC5pdGVyOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5
KQogICAgICAgICBtX2ltcGwtPnJlZigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxp
dFN0cmluZy5jcHAKaW5kZXggMDM1YzRhMjFhNzJjOWNkODQwZTBiMjk2MmNlNjk3NmFkODU2YmNi
ZS4uOWUzNmQ1MTBkZDk2YmY0N2M5YThlMWE0ZjlkY2I4NjIxM2ZjZGQwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIFNwYWNlU3Bs
aXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0cmluZ0RhdGEoKQogCiBQYXNzUmVmUHRyPFNwYWNl
U3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyaW5nKQogewotICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNo
YXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNwYWNlU3Bs
aXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5pdGVy
LT5zZWNvbmQ7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIGRhdGEgPSBuZXcgU3BhY2VTcGxp
dFN0cmluZ0RhdGEoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDU3NjFmNTA2ZTkwMTA5MTczNjQ2YzFj
OTM3YzUxMDc2M2IxYWMyNjMuLmQ1Y2I2ZDFiNWY4OWI4NjlmYTM2MzdjODJiYzQwMmY3MzBkMTY4
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBA
QCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKCkKIAogICAgIFByZXNl
bnRhdGlvbkF0dHJpYnV0ZUNhY2hlOjppdGVyYXRvciBjYWNoZUl0ZXJhdG9yOwogICAgIGlmIChj
YWNoZUhhc2gpIHsKLSAgICAgICAgY2FjaGVJdGVyYXRvciA9IHByZXNlbnRhdGlvbkF0dHJpYnV0
ZUNhY2hlKCkuYWRkKGNhY2hlSGFzaCwgbnVsbHB0cikuZmlyc3Q7CisgICAgICAgIGNhY2hlSXRl
cmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gsIG51bGxw
dHIpLml0ZXI7CiAgICAgICAgIGlmIChjYWNoZUl0ZXJhdG9yLT5zZWNvbmQgJiYgY2FjaGVJdGVy
YXRvci0+c2Vjb25kLT5rZXkgIT0gY2FjaGVLZXkpCiAgICAgICAgICAgICBjYWNoZUhhc2ggPSAw
OwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCBk
MTFmZWUxMjE4MTVjN2NmYzdjOTlkMDFjZTU0NTU4N2JlM2NiMWI2Li4xNTFkNmJhOWZlYWU5MTM2
YmFjOGVlYTJjZTQ5MGFlNDYzMDM1ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xs
ZWN0aW9uOjp0YWdzKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogdm9pZCBIVE1MQ29sbGVjdGlvbjo6
YXBwZW5kKE5vZGVDYWNoZU1hcCYgbWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBt
YXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFZl
Y3RvcjxFbGVtZW50Kj4gPiYgdmVjdG9yID0gbWFwLmFkZChrZXkuaW1wbCgpLCBudWxscHRyKS5p
dGVyLT5zZWNvbmQ7CiAgICAgaWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8RWxlbWVudCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjVkY2Ez
M2NlNzA0ODhkYjVhODNjZDlmOTNlZDVjZDFmYThhOWQ2Ny4uZDY1NmQyMzViOTljZGY4MGQ2NzFj
Y2U3NGYzNGY3ZjMzOTNiNWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHAKQEAgLTIzMywxMiArMjMzLDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlm
Zihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93
blB0CiAgICAgRGlmZlRhYmxlIG9sZFRhYmxlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBuZXdMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQg
PSBuZXdUYWJsZS5hZGQobmV3TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJz
dDsKKyAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0
W2ldLT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLml0ZXI7CiAgICAgICAgIGl0LT5zZWNvbmQu
YXBwZW5kKGkpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2xkTGlzdC5z
aXplKCk7ICsraSkgewotICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9yIGl0ID0gb2xkVGFibGUu
YWRkKG9sZExpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNpemVfdD4oKSkuZmlyc3Q7CisgICAgICAg
IERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBvbGRUYWJsZS5hZGQob2xkTGlzdFtpXS0+bV9zaGEx
LCBWZWN0b3I8c2l6ZV90PigpKS5pdGVyOwogICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCmluZGV4IGRjYTgxY2FjYWM2YjM4N2RlZWE2ZjkzOTdjMGFjZWUyNDJmNjA2NjkuLmQxYTNi
ZWI3ZTI3MDY0N2U5N2MyYTQwYjcwZmEwNjE3MGFkNDQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTgxLDEyICsxODEsMTIgQEAg
aW5saW5lIHZvaWQgU2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcihib29sIG1hdGNoZWQp
CiAgICAgZG91YmxlIG1hdGNoVGltZU1zID0gV1RGOjpjdXJyZW50VGltZU1TKCkgLSBtX2N1cnJl
bnRNYXRjaERhdGEuc3RhcnRUaW1lOwogICAgIG1fdG90YWxNYXRjaGluZ1RpbWVNcyArPSBtYXRj
aFRpbWVNczsKIAotICAgIHBhaXI8UnVsZU1hdGNoaW5nU3RhdHNNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmFkZChtYWtlS2V5KCksIFJ1bGVNYXRjaGlu
Z1N0YXRzKG1fY3VycmVudE1hdGNoRGF0YSwgbWF0Y2hUaW1lTXMsIDEsIG1hdGNoZWQgPyAxIDog
MCkpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZC50b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kLmhpdHMgKz0gMTsKKyAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMo
bV9jdXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZC50
b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7CisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQuaGl0
cyArPSAxOwogICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kLm1hdGNoZXMgKz0gMTsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQubWF0
Y2hlcyArPSAxOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggN2MwNzU5MWRmMGUyMjFhNWVkYTBiNDliZDQ5NDYyMTg5
YThlODNlYy4uN2I5ZjlmOTM3ZGJlZTUzNzZiMWQ3OTRiYzQzZjYwYTNkYWE5MzJjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC04NzYs
NyArODc2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW0KICAgICB9CiAKICAgICAqc2VhcmNo
SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKLSAgICBTZWFyY2hS
ZXN1bHRzOjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJ
ZCwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpLmZpcnN0OworICAgIFNlYXJjaFJlc3VsdHM6Oml0
ZXJhdG9yIHJlc3VsdHNJdCA9IG1fc2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElkLCBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4oKSkuaXRlcjsKIAogICAgIGZvciAoTGlzdEhhc2hTZXQ8Tm9kZSo+Ojpp
dGVyYXRvciBpdCA9IHJlc3VsdENvbGxlY3Rvci5iZWdpbigpOyBpdCAhPSByZXN1bHRDb2xsZWN0
b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIHJlc3VsdHNJdC0+c2Vjb25kLmFwcGVuZCgqaXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IDQ2NWY3ZGJiYTg5YmY1YjQyZDU2MTNhOTZlZTNhMjRhOTRkYWZkMzguLmI3YjE5
NWJlNzllNjMzOTE5ZmIzOTE5Nzg2OWFjZDgwMDkzMGJjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMzMyw3ICsz
MzMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVhawogCiAgICAgQnJlYWtwb2ludElkVG9EZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJZHNNYXA6Oml0ZXJhdG9yIGRlYnVnU2VydmVyQnJlYWtwb2ludElk
c0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5maW5k
KGJyZWFrcG9pbnRJZCk7CiAgICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9y
ID09IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuZW5kKCkpCi0gICAg
ICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElkcy5zZXQoYnJlYWtwb2ludElkLCBWZWN0b3I8U3RyaW5nPigp
KS5maXJzdDsKKyAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2Jy
ZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZl
Y3RvcjxTdHJpbmc+KCkpLml0ZXI7CiAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0
b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQpOwogCiAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gVHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaAppbmRleCA3MDdjMjc2YWVhZTY5ZWY3ZjUzZmU1OGIzYmEwZjFmM2I2
MmQzNjhhLi4xMzFjYzA4MGY2YThlMGQ2MzBlZTAyNjk1Y2U4ZmY3NWE5NDM3MGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0yODEsMjEgKzI4MSwy
MSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFN0cmluZyhjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
dmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2
YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5pc05ld0tleSkK
ICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ck9iamVjdDo6c2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5z
ZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSku
aXNOZXdLZXkpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAo
bV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUs
IHZhbHVlKS5pc05ld0tleSkKICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAKaW5kZXggZTYyMjljNDRkNTQ2MDBjZjU0YTZjYjU0Y2EzNmJhMzgyMWVkZTIw
Ni4uODIwZTMxZTdmNTBjOGViOTdlNTFmN2U1YThjYzZhZTkxMjE2YmNlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTEwNjIsMTAgKzEwNjIsMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmFkZEVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCB0eXBlKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHBhaXI8RW50cnlNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUpOworICAgIEVudHJ5TWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQodXJsLCB0eXBlKTsKICAgICAKLSAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IHR5
cGU7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNv
bmQgfD0gdHlwZTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURv
Y3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9u
Q2FjaGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMTZhN2NjZjJkMzVmNjRlZDRi
MGU1NzMyMTBhMzY3NTgzNTc0NGRmMS4uOGM3MmY2YTlhYzY0NTk4NjU0MDkxZjhmOTBhNDQwZWY2
ODMwYzVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVD
YWNoZUdyb3VwKGNvbnN0IEtVUgogewogICAgIEFTU0VSVCghbWFuaWZlc3RVUkwuaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkpOwogCi0gICAgc3RkOjpwYWlyPENhY2hlR3JvdXBNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBtX2NhY2hlc0luTWVtb3J5LmFkZChtYW5pZmVzdFVSTCwgMCk7Cisg
ICAgQ2FjaGVHcm91cE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRk
KG1hbmlmZXN0VVJMLCAwKTsKICAgICAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAg
ICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5m
aXJzdC0+c2Vjb25kOworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KSB7CisgICAgICAgIEFTU0VS
VChyZXN1bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNv
bmQ7CiAgICAgfQogCiAgICAgLy8gTG9vayB1cCB0aGUgZ3JvdXAgaW4gdGhlIGRhdGFiYXNlCkBA
IC0xNTAsNyArMTUwLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICAgICAgbV9jYWNo
ZUhvc3RTZXQuYWRkKHVybEhvc3RIYXNoKG1hbmlmZXN0VVJMKSk7CiAgICAgfQogICAgIAotICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kID0gZ3JvdXA7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9
IGdyb3VwOwogICAgIAogICAgIHJldHVybiBncm91cDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCBhNzFlODUxNTQ2ZmMyMGFiODdjYTc3MjA1NTYxNzRmYzY2NjJlZTdj
Li40MjhlMzNiMjViNjYzZWU4ZjQyODU0ZWY4YTRjOThmMjgyMjBmOWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNTE2LDcgKzM1MTYsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQog
ICAgICAgICAvLyBFbnN1cmUgdGhpcyB0YXJnZXQncyB0b3VjaCBsaXN0IGV4aXN0cywgZXZlbiBp
ZiBpdCBlbmRzIHVwIGVtcHR5LCBzbyBpdCBjYW4gYWx3YXlzIGJlIHBhc3NlZCB0byBUb3VjaEV2
ZW50OjpDcmVhdGUgYmVsb3cuCiAgICAgICAgIFRhcmdldFRvdWNoZXNNYXA6Oml0ZXJhdG9yIHRh
cmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5maW5kKHRvdWNoVGFyZ2V0Lmdl
dCgpKTsKICAgICAgICAgaWYgKHRhcmdldFRvdWNoZXNJdGVyYXRvciA9PSB0b3VjaGVzQnlUYXJn
ZXQuZW5kKCkpCi0gICAgICAgICAgICB0YXJnZXRUb3VjaGVzSXRlcmF0b3IgPSB0b3VjaGVzQnlU
YXJnZXQuc2V0KHRvdWNoVGFyZ2V0LmdldCgpLCBUb3VjaExpc3Q6OmNyZWF0ZSgpKS5maXJzdDsK
KyAgICAgICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5zZXQo
dG91Y2hUYXJnZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLml0ZXI7CiAKICAgICAgICAg
Ly8gdG91Y2hlcyBhbmQgdGFyZ2V0VG91Y2hlcyBzaG91bGQgb25seSBjb250YWluIGluZm9ybWF0
aW9uIGFib3V0IHRvdWNoZXMgc3RpbGwgb24gdGhlIHNjcmVlbiwgc28gaWYgdGhpcyBwb2ludCBp
cwogICAgICAgICAvLyByZWxlYXNlZCBvciBjYW5jZWxsZWQgaXQgd2lsbCBvbmx5IGFwcGVhciBp
biB0aGUgY2hhbmdlZFRvdWNoZXMgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRl
eCA3MzFlMWZjMDc5YjVmZTlmYjM5MDBmYjU3YmYzNmUxZDk2NmE4ZmIyLi4xZmU0NzY5OTg1MDMz
ZWQzOTk1NzUzOWJiYzU4ODdlMGYzZTA2YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3Bw
CkBAIC05MCwxNSArOTAsMTUgQEAgUGFnZUdyb3VwKiBQYWdlR3JvdXA6OnBhZ2VHcm91cChjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAgICAgIHBhZ2VH
cm91cHMgPSBuZXcgUGFnZUdyb3VwTWFwOwogCi0gICAgcGFpcjxQYWdlR3JvdXBNYXA6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKKyAgICBQ
YWdlR3JvdXBNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1l
LCAwKTsKIAotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0
LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBQYWdl
R3JvdXAoZ3JvdXBOYW1lKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5KSB7CisgICAgICAgIEFT
U0VSVCghcmVzdWx0Lml0ZXItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQg
PSBuZXcgUGFnZUdyb3VwKGdyb3VwTmFtZSk7CiAgICAgfQogCi0gICAgQVNTRVJUKHJlc3VsdC5m
aXJzdC0+c2Vjb25kKTsKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgQVNT
RVJUKHJlc3VsdC5pdGVyLT5zZWNvbmQpOworICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vjb25k
OwogfQogCiB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQpAQCAtMTk3LDcgKzE5
Nyw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoTGlua0hhc2ggaGFz
aCkKIHsKICAgICBBU1NFUlQoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwogI2lmICFQTEFURk9S
TShDSFJPTUlVTSkKLSAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLnNlY29u
ZCkKKyAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLmlzTmV3S2V5KQogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKICAgICBQYWdlOjp2aXNpdGVkU3RhdGVDaGFuZ2VkKHRoaXMs
IGhhc2gpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0
VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAg
T3duUHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdChz
b3VyY2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIGluamVjdGlvblRpbWUsIGluamVjdGVk
RnJhbWVzKSk7CiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAgICAgICBtX3VzZXJTY3JpcHRz
ID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRNYXApOwotICAgIE93blB0cjxVc2VyU2NyaXB0VmVj
dG9yPiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLT5hZGQod29ybGQsIG51bGxwdHIp
LmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFVzZXJTY3JpcHRWZWN0b3I+JiBzY3JpcHRzSW5X
b3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlci0+c2Vjb25kOwog
ICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNjcmlwdHNJbldvcmxkID0gYWRvcHRQ
dHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlwdHNJbldvcmxkLT5hcHBlbmQodXNl
clNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgUGFnZUdyb3VwOjph
ZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3Ry
aW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCA9IGFkb3B0
UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xpc3Qs
IGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICghbV91c2VyU3R5bGVTaGVldHMpCiAg
ICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0TWFw
KTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNoZWV0c0luV29ybGQg
PSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOwor
ICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1f
dXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0ZXItPnNlY29uZDsKICAgICBp
ZiAoIXN0eWxlU2hlZXRzSW5Xb3JsZCkKICAgICAgICAgc3R5bGVTaGVldHNJbldvcmxkID0gYWRv
cHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0VmVjdG9yKTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQt
PmFwcGVuZCh1c2VyU3R5bGVTaGVldC5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcAppbmRleCA5MzFmMjYwM2ZkNGYyMjFiNGI1ZGUzYWNkYzM3ZDk3NmQxM2Rm
MjI3Li44OTFiNTg1YTQ3NDFiMTFiNWFmNGUxNzBmODFkNjMxNDM0OTFmNzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTMxLDExICsxMzEsMTEgQEAgdm9pZCBT
ZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHNvdXJjZU8KICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNvdXJjZVN0
cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwotICAgIHBhaXI8T3JpZ2luQWNjZXNzTWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0
cmluZywgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CisgICAg
T3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRk
KHNvdXJjZVN0cmluZywgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3QpOwogCi0gICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5z
ZWNvbmQuZ2V0KCk7CisgICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0Lml0
ZXItPnNlY29uZC5nZXQoKTsKICAgICBsaXN0LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vz
c0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3Vj
aEFkanVzdG1lbnQuY3BwCmluZGV4IGRkMDU0NjE4ZDBmODBhODAyNjI2ODVkOGIwZjRhOTk3YmIx
M2I1MzguLjhhOTliZmZmMGZiYTg4YTNhYjc1ZTQ4M2Q4NmUzM2E4N2M4ZmU1ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lk
IGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBT
dWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAgICAgICAgIHJlc3BvbmRpbmdOb2RlID0gdmlz
aXRlZE5vZGU7CiAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgdGhlIGl0ZXJhdGlvbiB0byBj
b2xsZWN0IHRoZSBhbmNlc3RvcnMgb2YgdGhlIHJlc3BvbmRlciwgd2hpY2ggd2Ugd2lsbCBuZWVk
IGxhdGVyLgogICAgICAgICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9k
ZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXI8SGFzaFNl
dDxOb2RlKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3BvbmRl
cnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1
bHQuc2Vjb25kKQorICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PE5vZGUqPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0tleSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3Bl
cnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxp
c3QuY3BwCmluZGV4IDRiODIzYjEyYjc4YjY1ZGNjNzViYzExMTc2MjY4MTQwNjZmMjg1ZjkuLmFl
ZWU0YWI4ZGUyNDUxMjBiOTk4MzFkZTA0NDRmMjhmZmIxMjU4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKGludCBpbnRl
Z2VyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2ludGVnZXJaZXJvT2JqZWN0UmVm
ZXJlbmNlID0gbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICghbV9pbnRlZ2Vycy5hZGQoaW50ZWdlciwgbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlKS5z
ZWNvbmQpCisgICAgICAgIGlmICghbV9pbnRlZ2Vycy5hZGQoaW50ZWdlciwgbV9jdXJyZW50T2Jq
ZWN0UmVmZXJlbmNlKS5pc05ld0tleSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
KyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBCaW5h
cnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXIoaW50IGludGVnZXIpCiB2b2lkIEJpbmFy
eVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgICsrbV9jdXJyZW50QWdncmVnYXRlU2l6ZTsKLSAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3Ry
aW5nLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UpLnNlY29uZCkKKyAgICBpZiAoIW1fc3RyaW5n
cy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UpLmlzTmV3S2V5KQogICAgICAg
ICByZXR1cm47CiAgICAgKyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7CiAgICAgd3JpdGVTdHJp
bmdPYmplY3Qoc3RyaW5nKTsKQEAgLTIyNCwxMiArMjI0LDEyIEBAIHZvaWQgQmluYXJ5UHJvcGVy
dHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyQXJyYXkoY29uc3QgaW50KiBpbnRlZ2Vycywgc2l6ZV90
IHNpemUpCiB7CiAgICAgc2l6ZV90IHNhdmVkQWdncmVnYXRlU2l6ZSA9ICsrbV9jdXJyZW50QWdn
cmVnYXRlU2l6ZTsKICAgICBBU1NFUlQoc2l6ZSk7Ci0gICAgcGFpcjxJbnRlZ2VyQXJyYXlNYXA6
Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX2ludGVnZXJBcnJheXMuYWRkKEludGVnZXJB
cnJheShpbnRlZ2Vycywgc2l6ZSksIDApOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAg
ICBJbnRlZ2VyQXJyYXlNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2ludGVnZXJBcnJheXMu
YWRkKEludGVnZXJBcnJheShpbnRlZ2Vycywgc2l6ZSksIDApOworICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3S2V5KQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgIHdyaXRlSW50ZWdlcihpbnRlZ2Vyc1tpXSk7Ci0gICAgYWRkUmVz
dWx0LmZpcnN0LT5zZWNvbmQgPSBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UrKzsKKyAgICBhZGRS
ZXN1bHQuaXRlci0+c2Vjb25kID0gbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlKys7CiAgICAgd3Jp
dGVBcnJheU9iamVjdChzaXplKTsKICAgICBtX2N1cnJlbnRBZ2dyZWdhdGVTaXplID0gc2F2ZWRB
Z2dyZWdhdGVTaXplOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXggMWI1YTczMTllNDJkOWRm
MTRiZDI1OTUxMTMxOTE2MmU4NzE1YzE3NS4uYmRmNzAzMzMzMzU0MmM1MmRmNTIxNjAyNGM0OWU5
NzdhOTEwMTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC00MjgsMTggKzQyOCwxOCBAQCB2
b2lkIExheWVyVGlsZXI6OnByb2Nlc3NUZXh0dXJlSm9iKGNvbnN0IFRleHR1cmVKb2ImIGpvYiwg
VGlsZUpvYnNNYXAmIHRpbGVKb2JzTQogdm9pZCBMYXllclRpbGVyOjphZGRUaWxlSm9iKGNvbnN0
IFRpbGVJbmRleCYgaW5kZXgsIGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgVGlsZUpvYnNNYXAmIHRp
bGVKb2JzTWFwKQogewogICAgIC8vIEhhc2hNYXA6OmFkZCBhbHdheXMgcmV0dXJucyBhIHZhbGlk
IGl0ZXJhdG9yIGV2ZW4gdGhlIGtleSBhbHJlYWR5IGV4aXN0cy4KLSAgICBwYWlyPFRpbGVKb2Jz
TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9i
KTsKKyAgICBUaWxlSm9ic01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHRpbGVKb2JzTWFwLmFkZChp
bmRleCwgJmpvYik7CiAKICAgICAvLyBTdWNjZXNzZnVsbHkgYWRkZWQgdGhlIG5ldyBqb2IuCi0g
ICAgaWYgKHJlc3VsdC5zZWNvbmQpCisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGxlYXZlIHRoZSBwcmV2aW91cyBqb2Iu
Ci0gICAgaWYgKGpvYi5tX3R5cGUgPT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1
bHQuZmlyc3QtPnNlY29uZC0+bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykK
KyAgICBpZiAoam9iLm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXJ0eUNvbnRlbnRzICYmIHJlc3Vs
dC5pdGVyLT5zZWNvbmQtPm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIE92ZXJyaWRlIHRoZSBwcmV2aW91cyBqb2IuCi0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSAmam9iOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSAm
am9iOwogfQogCiB2b2lkIExheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGls
ZSwgY29uc3QgVGV4dHVyZUpvYiYgam9iLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCmluZGV4IGY2Y2NiOTVkN2U3MTBhM2MxM2Y2MWYyMjAzNjc4MGViZWI2Nzc1YjMuLjc3
NGM5M2JiZWJkZGZhNWMzOWY2NjA1M2Q1ZTBhMzM3ZTcwYmIxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApA
QCAtMjQ4OCwxNiArMjQ4OCwxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhp
Y3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbAogICAgIC8vIEFk
ZCB3aXRoIGEgZHVtbXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9u
IHBvc2l0aW9uLCBhbmQgYSBib29sZWFuIHRoYXQgdGVsbHMKICAgICAvLyB1cyB3aGV0aGVyIHRo
ZXJlJ3MgYW4gaXRlbSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1
cHMuCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1h
cDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15
KTsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICBMYXllck1hcDo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0tleSkgewogICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBl
eGlzdHMgYWxyZWFkeS4KLSAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuaXRlci0+c2Vjb25k
LmdldCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihz
b3VyY2VMYXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1bHRM
YXllci0+c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9u
ZUlEWzBVXSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAgICAg
IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CisgICAgICAgIGFkZFJlc3Vs
dC5pdGVyLT5zZWNvbmQgPSByZXN1bHRMYXllcjsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0
TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKaW5kZXggNzExYjg5NmFj
NjEyODgzNjJlZDcyZWRmNzJhNDcwOTJmZTcyMjRiZS4uNTQ0OTM4NjZiOWI2OTRiN2I0NWQyYTBk
NDFiZjNlYzY3ZjUwMTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcApA
QCAtNDE0LDggKzQxNCw4IEBAIGJvb2wgZ2V0RGVyaXZlZEZvbnREYXRhKGNvbnN0IFVDaGFyKiBm
YW1pbHksCiAgICAgICAgIC8vIGEgZm9udCBldmVuIGlmIHRoZXJlJ3Mgbm8gZm9udCBtYXRjaGlu
ZyB0aGUgbmFtZS4gTmVlZCB0bwogICAgICAgICAvLyBjaGVjayBpdCBhZ2FpbnN0IHdoYXQgd2Ug
YWN0dWFsbHkgd2FudCAoYXMgaXMgZG9uZSBpbgogICAgICAgICAvLyBGb250Q2FjaGVXaW4uY3Bw
KQotICAgICAgICBwYWlyPEZvbnREYXRhQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IGZv
bnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnREYXRhKCkpOwotICAgICAgICBkZXJpdmVkID0g
JmVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIEZvbnREYXRhQ2FjaGU6OkFkZFJlc3VsdCBl
bnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnREYXRhKCkpOworICAgICAgICBk
ZXJpdmVkID0gJmVudHJ5Lml0ZXItPnNlY29uZDsKICAgICAgICAgZGVyaXZlZC0+aGZvbnQgPSBD
cmVhdGVGb250SW5kaXJlY3QobG9nZm9udCk7CiAgICAgICAgIC8vIEdldEFzY2VudCBtYXkgcmV0
dXJuIGtVbmRlZmluZWRBc2NlbnQsIGJ1dCB3ZSBzdGlsbCB3YW50IHRvCiAgICAgICAgIC8vIGNh
Y2hlIGl0IHNvIHRoYXQgd2Ugd29uJ3QgaGF2ZSB0byBjYWxsIENyZWF0ZUZvbnRJbmRpcmVjdCBv
bmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggMzcyYTBlMDhlOGYzYjI3Yzc0NWViNDViMTUyMzUzOTRlNzIwMjZjYi4uNmI2YzVmM2Nm
OThmMTZjMzk5ZTAzMWVhNjFlMmI0ZTI2NWMxYzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJn
ZXRBdmFpbGFiaWxpdHkoZG91CiAgICAgICAgICAgICAvLyBvZiBibG9ja2VkIHByb3BlcnRpZXMu
CiAgICAgICAgICAgICBib29sIG51bGxJbnRlcnNlY3Rpb24gPSB0cnVlOwogICAgICAgICAgICAg
Zm9yIChUYXJnZXRQcm9wZXJ0aWVzOjppdGVyYXRvciBwSXRlciA9IGVucXVldWVkUHJvcGVydGll
cy5iZWdpbigpOyBwSXRlciAhPSBlbnF1ZXVlZFByb3BlcnRpZXMuZW5kKCk7ICsrcEl0ZXIpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIWJsb2NrZWRQcm9wZXJ0aWVzLmFkZCgqcEl0ZXIpLnNlY29u
ZCkKKyAgICAgICAgICAgICAgICBpZiAoIWJsb2NrZWRQcm9wZXJ0aWVzLmFkZCgqcEl0ZXIpLmlz
TmV3S2V5KQogICAgICAgICAgICAgICAgICAgICBudWxsSW50ZXJzZWN0aW9uID0gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQVRTVUkuY3BwCmluZGV4
IDA0MzdiY2RmYzA5Yjk2N2RhN2ZlMTk2ZjI3YmYyZTBlNzEyMmVkOTkuLmJkODRjZGY3MGQ5Yzk4
NDVmMjcyMzhiNjEwZGRlMzc5MTRjOWQzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckFUU1VJLmNwcApAQCAtMjc4LDE1ICsyNzgsMTUgQEAgc3RhdGljIHZvaWQgZGlzYWJsZUxpZ2F0
dXJlcyhjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIEFUU1VTdHlsZSBhdHN1U3R5bGUK
IHN0YXRpYyBBVFNVU3R5bGUgaW5pdGlhbGl6ZUFUU1VTdHlsZShjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udERhdGEsIFR5cGVzZXR0aW5nRmVhdHVyZXMgdHlwZXNldHRpbmdGZWF0dXJlcykKIHsK
ICAgICB1bnNpZ25lZCBrZXkgPSB0eXBlc2V0dGluZ0ZlYXR1cmVzICsgMTsKLSAgICBwYWlyPEhh
c2hNYXA8dW5zaWduZWQsIEFUU1VTdHlsZT46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBm
b250RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRkKGtleSwgMCk7Ci0gICAgQVRTVVN0eWxlJiBhdHN1
U3R5bGUgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNv
bmQpCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0eWxlPjo6QWRkUmVzdWx0IGFkZFJlc3Vs
dCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5hZGQoa2V5LCAwKTsKKyAgICBBVFNVU3R5bGUm
IGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5pdGVyLT5zZWNvbmQ7CisgICAgaWYgKCFhZGRSZXN1bHQu
aXNOZXdLZXkpCiAgICAgICAgIHJldHVybiBhdHN1U3R5bGU7CiAKICAgICBBVFNVRm9udElEIGZv
bnRJRCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSA/IENURm9udEdldFBsYXRm
b3JtRm9udChmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuY3RGb250KCksIDApIDogMDsKICAgICBp
ZiAoIWZvbnRJRCkgewogICAgICAgICBMT0dfRVJST1IoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJ
RCBmb3IgJXAiLCBmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuZm9udCgpKTsKLSAgICAgICAgZm9u
dERhdGEtPm1fQVRTVVN0eWxlTWFwLnJlbW92ZShhZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBm
b250RGF0YS0+bV9BVFNVU3R5bGVNYXAucmVtb3ZlKGFkZFJlc3VsdC5pc05ld0tleSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4
IDgzMmJiOWRkZjhkYTEyOThmZDM5MzI1NjI4NGQwNGU2MzU4ZjI0MjYuLjBkNGU5YTNmMDljOGU0
NzRjMzcwMTM4YjQ5ZjEzYjE0ZGZhMTA4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKQEAgLTQyLDkgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0ZEaWN0aW9uYXJ5UmVm
IFNpbXBsZUZvbnREYXRhOjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJl
cyB0eXBlc2V0dGluZ0ZlYXR1cmVzLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0
CiB7CiAgICAgdW5zaWduZWQga2V5ID0gdHlwZXNldHRpbmdGZWF0dXJlcyArIDE7Ci0gICAgcGFp
cjxIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+OjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9DRlN0cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4oKSk7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4m
IGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAgaWYg
KCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+ID46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX0NGU3RyaW5nQXR0cmlidXRl
cy5hZGQoa2V5LCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZGRSZXN1bHQuaXRlci0+
c2Vjb25kOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3S2V5KQogICAgICAgICByZXR1cm4gYXR0
cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCk7CiAgICAgCiAgICAgYm9vbCB0cmVhdExpbmVBc1ZlcnRp
Y2FsID0gb3JpZW50YXRpb24gPT0gVmVydGljYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCmluZGV4
IDY5MmZkNmQwZDFmMWRiODFhZDI5NzJhM2YzMzQzN2JlZjZmZTYzNWQuLmU3ZjhmZGU1NzA4ZmFm
NDJmZGIzMGI2ZTc1ZWE3OThiYThkYzkyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCkBAIC0y
ODUsMTEgKzI4NSwxMSBAQCBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPiBGaXhlZFNpemVG
b250RGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaQogc3RhdGljIFBhc3NSZWZQ
dHI8Rml4ZWRTaXplRm9udERhdGE+IGNyZWF0ZUZpeGVkU2l6ZUZvbnREYXRhKGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5LCB1bnNpZ25lZCB3ZWlnaHQsIGJvb2wgaXRhbGljKQogewogICAgIEZp
eGVkU2l6ZUZvbnREYXRhS2V5IGtleShmYW1pbHksIHdlaWdodCwgaXRhbGljKTsKLSAgICBwYWly
PEZpeGVkU2l6ZUZvbnRDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGdfZml4ZWRTaXpl
Rm9udENhY2hlLmFkZChrZXksIFJlZlB0cjxGaXhlZFNpemVGb250RGF0YT4oKSk7Ci0gICAgaWYg
KHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gRml4ZWRTaXpl
Rm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdlaWdodCwgaXRhbGljKTsKKyAgICBGaXhlZFNpemVG
b250Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnX2ZpeGVkU2l6ZUZvbnRDYWNoZS5hZGQoa2V5
LCBSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+KCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkp
CisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgPSBGaXhlZFNpemVGb250RGF0YTo6Y3JlYXRl
KGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOwogCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vj
b25kOworICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vjb25kOwogfQogCiBzdGF0aWMgTE9ORyB0
b0dESUZvbnRXZWlnaHQoRm9udFdlaWdodCBmb250V2VpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcAppbmRleCBhNjY5YmM4ZWY4NTIzZDQ4
NjZmMWViODBhMjUxMjMzMDJhZDRjNDViLi41NzQ3MjY3NzI2MmE5YzNhZjZlMDljMDA1ZGQxYWQy
MGZjMTFkYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGszLmNwcApAQCAtNzcsOSArNzcsOSBAQCBzdGF0aWMgU3R5bGVDb250ZXh0TWFwJiBzdHls
ZUNvbnRleHRNYXAoKQogCiBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNvbnRleHQo
R1R5cGUgd2lkZ2V0VHlwZSkKIHsKLSAgICBzdGQ6OnBhaXI8U3R5bGVDb250ZXh0TWFwOjppdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gc3R5bGVDb250ZXh0TWFwKCkuYWRkKHdpZGdldFR5cGUsIDAp
OwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+
c2Vjb25kLmdldCgpOworICAgIFN0eWxlQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0
eWxlQ29udGV4dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05l
d0tleSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQuZ2V0KCk7CiAKICAgICBH
dGtXaWRnZXRQYXRoKiBwYXRoID0gZ3RrX3dpZGdldF9wYXRoX25ldygpOwogICAgIGd0a193aWRn
ZXRfcGF0aF9hcHBlbmRfdHlwZShwYXRoLCB3aWRnZXRUeXBlKTsKQEAgLTExMSw3ICsxMTEsNyBA
QCBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNvbnRleHQoR1R5cGUgd2lkZ2V0VHlw
ZSkKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfcGF0aChjb250ZXh0LmdldCgpLCBwYXRoKTsK
ICAgICBndGtfd2lkZ2V0X3BhdGhfZnJlZShwYXRoKTsKIAotICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kID0gY29udGV4dDsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gY29udGV4dDsKICAgICBy
ZXR1cm4gY29udGV4dC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXggNDRjNTY4MWZiYmQ1MzQ4YjIwMTQ5MzUx
ZmEzNjgzMmQ3OTU4MjYyOC4uNTAwOTFlMTlkM2FmNTZmZjRhOGRmMTc1YmY4OTc4NzAwNzYxNDI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVy
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBIVFRQSGVhZGVyTWFwOjpnZXQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjpnZXQobmFtZSk7CiB9CiAKLXBhaXI8SFRUUEhl
YWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitIVFRQSGVhZGVyTWFwOjpBZGRSZXN1
bHQgSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUsIHZhbHVlKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBA
QCBib29sIEhUVFBIZWFkZXJNYXA6OmNvbnRhaW5zKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0CiAg
ICAgcmV0dXJuIGZpbmQ8Y29uc3QgY2hhciosIENhc2VGb2xkaW5nQ1N0cmluZ1RyYW5zbGF0b3I+
KG5hbWUpICE9IGVuZCgpOwogfQogCi1wYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29s
PiBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK0hUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkPGNvbnN0IGNoYXIqLCBDYXNl
Rm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yPihuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IDAyMDcxZTM2MTBj
MWQ0YjRmY2RmNGQ2Yzk1OWI0OWY4N2YzYTVmMTUuLjEyYmRlMDY4OTdlN2NlM2YzZWM5MDEyZTFj
MzdmZGZmZThkODljMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5oCkBAIC01MSwxMiArNTEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAKICAgICAgICAgU3RyaW5nIGdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0OwogCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICAgICAg
Ly8gQWx0ZXJuYXRlIGFjY2Vzc29ycyB0aGF0IGFyZSBmYXN0ZXIgdGhhbiBjb252ZXJ0aW5nIHRo
ZSBjaGFyKiB0byBBdG9taWNTdHJpbmcgZmlyc3QuCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29u
c3QgY2hhciopIGNvbnN0OwogICAgICAgICBTdHJpbmcgZ2V0KGNvbnN0IGNoYXIqKSBjb25zdDsK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IGNoYXIqIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgICAgICAKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApp
bmRleCA0M2E2NGU5NzA3MjQwNDA0MjI3ZGNiMGQ1ZTI1NmQzNzRiODczNTlhLi5mZWY4NzgzNTZh
NWNmZTEwYTk3ODM3ZmU2NTdiYzM5NmI2MjFmZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTM3MSw5
ICszNzEsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldFByaW9yaXR5KFJlc291cmNl
TG9hZFByaW9yaXR5IHByaW9yaXR5KQogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQ
SGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2h0dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUs
IHZhbHVlKTsgCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3Qt
PnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7CisgICAgaWYgKCFyZXN1
bHQuaXNOZXdLZXkpCisgICAgICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7
CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICBtX3Bs
YXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKaW5kZXggM2U1OThiYWI2YjlhODUwYTVhNmNjOTI4YzAwNjljMDg5M2E4
MTA5ZS4uMTFhNTc0NWRkZmNlNGM5ZWZjYTEyZDYwZjc2ZGUyOGEyZjQ1YWUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBi
b29sIFBsdWdpbkRhdGFiYXNlOjphZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBwcnBQYWNr
YWdlKQogCiAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBwcnBQYWNrYWdlOwog
Ci0gICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2UpLnNlY29uZCkKKyAgICBpZiAoIW1fcGx1
Z2lucy5hZGQocGFja2FnZSkuaXNOZXdLZXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IG1fcGx1Z2luc0J5UGF0aC5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlKTsKQEAgLTU3NCw3
ICs1NzQsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2Fj
aGUoKQogCiAgICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFj
a2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRl
c2MsIG1pbWVEZXNjKTsKIAotICAgICAgICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFk
ZChwYWNrYWdlKS5zZWNvbmQpIHsKKyAgICAgICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1Z2lu
cy5hZGQocGFja2FnZSkuaXNOZXdLZXkpIHsKICAgICAgICAgICAgIGNhY2hlZFBsdWdpblBhdGhz
V2l0aFRpbWVzLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UtPmxhc3RNb2RpZmllZCgpKTsK
ICAgICAgICAgICAgIGNhY2hlZFBsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFj
a2FnZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2lu
L1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdp
bkRhdGFiYXNlV2luLmNwcAppbmRleCAyNzEyMWM2NjRlM2M2YjZiYzZiNWQ2ZWRkYmJhYmJjZjcy
Yjc2OWVkLi41NTYwMjU3NjgzZjg5YjQxMGI1OTg2YjExZThiNWY5OWE2NGE2NTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVj
dG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9ICppdCArICJcXCIgKyBmaWxl
bmFtZTsKLSAgICAgICAgICAgIGlmICghdW5pcXVlRmlsZW5hbWVzLmFkZChmdWxsUGF0aCkuc2Vj
b25kKQorICAgICAgICAgICAgaWYgKCF1bmlxdWVGaWxlbmFtZXMuYWRkKGZ1bGxQYXRoKS5pc05l
d0tleSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRk
KGZ1bGxQYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IGQ0NmQ1Yjk0MzQzNTc2YjZkZDA5MzA0MzExMDVjNjAxOTg5N2FlN2EuLjRlMjJiY2Q3YjExN2Rj
ZmFiZDJlZDA1M2U5OTRkZDM5N2IxZTY2ODggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcApAQCAtMzgzMyw3ICszODMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRk
UGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94KiBkZXNjZW5kYW50KQogICAgICAgICBk
ZXNjZW5kYW50U2V0ID0gbmV3IEhhc2hTZXQ8UmVuZGVyQm94Kj47CiAgICAgICAgIGdQZXJjZW50
SGVpZ2h0RGVzY2VuZGFudHNNYXAtPnNldCh0aGlzLCBkZXNjZW5kYW50U2V0KTsKICAgICB9Ci0g
ICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRhbnRTZXQtPmFkZChkZXNjZW5kYW50KS5zZWNvbmQ7Cisg
ICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRhbnRTZXQtPmFkZChkZXNjZW5kYW50KS5pc05ld0tleTsK
ICAgICBpZiAoIWFkZGVkKSB7CiAgICAgICAgIEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5l
ck1hcC0+Z2V0KGRlc2NlbmRhbnQpKTsKICAgICAgICAgQVNTRVJUKGdQZXJjZW50SGVpZ2h0Q29u
dGFpbmVyTWFwLT5nZXQoZGVzY2VuZGFudCktPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggYjI1
NDM3YzU1YzFmYzQ2NmZjN2ExMTk2NzI0OWZiYTE3OGI1NTQwNy4uNGVhZDg4ZDZhMDJhYTBmMDZj
YzBiZmE0NzM1Mjc2Y2VlNDg3YzIxOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTY2MiwxNCArNjYyLDE0IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKFJvb3RJbmxpbmVCb3gqIGxp
bmVCb3gsIEJpZGlSdW4qIHJ1CiAgICAgcnVuLT5tX2JveC0+c2V0TG9naWNhbFdpZHRoKHJlbmRl
cmVyLT53aWR0aChydW4tPm1fc3RhcnQsIHJ1bi0+bV9zdG9wIC0gcnVuLT5tX3N0YXJ0LCB4UG9z
LCBsaW5lSW5mby5pc0ZpcnN0TGluZSgpLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3cp
ICsgaHlwaGVuV2lkdGgpOwogICAgIGlmICghZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRv
SW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVG
b250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLmZpcnN0OworICAgICAgICBHbHlwaE92ZXJm
bG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQo
dG9JbmxpbmVUZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBs
ZUZvbnREYXRhKj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcjsKICAgICAgICAgQVNTRVJUKGl0
LT5zZWNvbmQuZmlyc3QuaXNFbXB0eSgpKTsKICAgICAgICAgY29weVRvVmVjdG9yKGZhbGxiYWNr
Rm9udHMsIGl0LT5zZWNvbmQuZmlyc3QpOwogICAgICAgICBydW4tPm1fYm94LT5wYXJlbnQoKS0+
Y2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CiAgICAgfQog
ICAgIGlmICgoZ2x5cGhPdmVyZmxvdy50b3AgfHwgZ2x5cGhPdmVyZmxvdy5ib3R0b20gfHwgZ2x5
cGhPdmVyZmxvdy5sZWZ0IHx8IGdseXBoT3ZlcmZsb3cucmlnaHQpKSB7CiAgICAgICAgIEFTU0VS
VChydW4tPm1fYm94LT5pc1RleHQoKSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRC
b3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigp
LCBHbHlwaE92ZXJmbG93KCkpKS5maXJzdDsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4
dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+
KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXI7CiAgICAgICAgIGl0LT5zZWNvbmQuc2Vjb25kID0g
Z2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5tX2JveC0+Y2xlYXJLbm93blRvSGF2ZU5vT3Zl
cmZsb3coKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHAKaW5kZXggMWM4OTJjODhlYzIzNDBlM2ZiOTNlY2FkZjEyYjk1ODQ3MWE4NjAwNC4u
MGRmMDJhZjlhMDhhM2RlZGY2NTVjOThjYmRkNTU3ZjJhYTBjNzY4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMjY1LDggKzI2NSw4IEBA
IHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucygpCiAKIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJGbG93VGhyZWFk
KiBvdGhlckZsb3dUaHJlYWQpCiB7Ci0gICAgc3RkOjpwYWlyPFJlbmRlckZsb3dUaHJlYWRDb3Vu
dGVkU2V0OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0
LmFkZChvdGhlckZsb3dUaHJlYWQpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgUmVu
ZGVyRmxvd1RocmVhZENvdW50ZWRTZXQ6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xheW91dEJlZm9y
ZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0tl
eSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlIHNlZSB0aGlzIGRlcGVu
ZGVuY3kuIE1ha2Ugc3VyZSB3ZSByZWNhbGN1bGF0ZSBhbGwgdGhlIGRlcGVuZGVuY2llcy4KICAg
ICAgICAgdmlldygpLT5zZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5KHRydWUpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggYWYyNjg3
NTAwZTljNmExZDViN2VjMmExODE3OGU4YWIzYmY5ZjBjYi4uNTViNTdiN2MzZTBhY2JkZjZhYWEw
ODFjYWQzYTA4ODc5NTQzN2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJS
ZWdpb246OnNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsCiAgICAg
aWYgKCFtX2lzVmFsaWQgfHwgIW1fZmxvd1RocmVhZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lv
bkluZm8uYWRkKGJveCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmVuZGVy
Qm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwg
bnVsbHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlmIChib3hJbmZvKQogICAgICAgICAqYm94SW5m
byA9IFJlbmRlckJveFJlZ2lvbkluZm8obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5z
ZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAKaW5kZXggOTA3ZmUxNjc3YjE3MDQ4MmM2ZjRhYzU3ZWQ5NzFkNTcyMTkxYWU0MS4uYmEw
Njg5Y2JlOWI1ODUzNDZhNGExYWI2YjA5MmU0OWUyNmY5OGY2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojph
cHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSoKICAgICBpZiAo
Z3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VO
RElOR0JPWCAmJiBvYmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIE93blB0cjxHcmFkaWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRp
ZW50TWFwLmFkZChvYmplY3QsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEdy
YWRpZW50RGF0YT4mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKG9iamVjdCwgbnVs
bHB0cikuaXRlci0+c2Vjb25kOwogICAgIGlmICghZ3JhZGllbnREYXRhKQogICAgICAgICBncmFk
aWVudERhdGEgPSBhZG9wdFB0cihuZXcgR3JhZGllbnREYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CmluZGV4IGJlYzBmMzM3NGY0NjQzNjJhOWE1ODNlYWYxOTgzNTAyODFiOGQwMmMuLjBiNGJiNGY5
NDgyYzZhMmQyYjA4OGFhYTgxOTgxMzhlNTMxNDk3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAg
LTgzLDcgKzgzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKgogICAgIGlmIChtX2F0dHJpYnV0
ZXMucGF0dGVyblVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJP
VU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgT3duUHRyPFBhdHRlcm5EYXRhPiYgcGF0dGVybkRhdGEgPSBtX3BhdHRl
cm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UGF0
dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0dGVybk1hcC5hZGQob2JqZWN0LCBudWxscHRy
KS5pdGVyLT5zZWNvbmQ7CiAgICAgaWYgKCFwYXR0ZXJuRGF0YSkKICAgICAgICAgcGF0dGVybkRh
dGEgPSBhZG9wdFB0cihuZXcgUGF0dGVybkRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTWFwLmNwcAppbmRleCA0OGRiNjk4MDMyMjJhNGNiMzlhZDFhODUwMGZhNmM2Mzg0ODIwNjg5
Li42YWUzNjE1MTJhNmVhZmM5NDE2NTUyODU3ZmRmYjRiNzRjMWJkMWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCBQYXNzUmVmUHRyPFN0
b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdQogICAgIH0KICAgICBtX2N1cnJlbnRMZW5ndGggPSBuZXdMZW5ndGg7CiAKLSAg
ICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0
ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsKKyAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsK
KyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXItPnNl
Y29uZCA9IHZhbHVlOwogCiAgICAgaW52YWxpZGF0ZUl0ZXJhdG9yKCk7CiAKQEAgLTE3MSw4ICsx
NzEsOCBAQCB2b2lkIFN0b3JhZ2VNYXA6OmltcG9ydEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQmUgc3VyZSB0byBjb3B5IHRoZSBrZXlzL3Zh
bHVlcyBhcyBpdGVtcyBpbXBvcnRlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGFyZSBkZXN0aW5l
ZAogICAgIC8vIHRvIGNyb3NzIGEgdGhyZWFkIGJvdW5kYXJ5Ci0gICAgcGFpcjxIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXkuaXNv
bGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LnNlY29uZCk7ICAvLyBUcnVlIGlmIHRoZSBrZXkgZGlkbid0IGV4aXN0IHBy
ZXZpb3VzbHkuCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFkZFJlc3VsdCByZXN1bHQg
PSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHkoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0tleSk7IC8vIFRydWUgaWYgdGhl
IGtleSBkaWRuJ3QgZXhpc3QgcHJldmlvdXNseS4KIAogICAgIEFTU0VSVChtX2N1cnJlbnRMZW5n
dGggKyBrZXkubGVuZ3RoKCkgPj0gbV9jdXJyZW50TGVuZ3RoKTsKICAgICBtX2N1cnJlbnRMZW5n
dGggKz0ga2V5Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRl
bnNpb25zLmNwcAppbmRleCA4MTBiOTY2NWMxZmE4MjBlMDE5NTRmNzFmMTdhZWM3N2U1NWRkMjVm
Li4xNTFmZDMxYTBkYmE2M2QwMDYzZmZjNzViNTE3NzU0OTJmMWE5MzY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBA
IHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgU1ZHU3R5bGVkCiAgICAgLy8gbWFwIGlmIHRoZSBlbGVtZW50IGFscmVh
ZHkgZXhpc3RzLiBTbyB3ZSBhZGQgd2l0aCBhIHZhbHVlIG9mIDAsIGFuZCBpdCBlaXRoZXIgZmlu
ZHMgdGhlCiAgICAgLy8gZXhpc3RpbmcgZWxlbWVudCBvciBhZGRzIGEgbmV3IG9uZSBpbiBhIHNp
bmdsZSBvcGVyYXRpb24uIFRoZSAiLmZpcnN0LT5zZWNvbmQiIGlkaW9tIGdldHMKICAgICAvLyB1
cyB0byB0aGUgaXRlcmF0b3IgZnJvbSBhZGQncyByZXN1bHQsIGFuZCB0aGVuIHRvIHRoZSB2YWx1
ZSBpbnNpZGUgdGhlIGhhc2ggdGFibGUuCi0gICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiYgc2V0ID0g
bV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBTVkdQZW5k
aW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCAwKS5pdGVyLT5z
ZWNvbmQ7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHNldCA9IG5ldyBTVkdQZW5kaW5nRWxlbWVu
dHM7CiAgICAgc2V0LT5hZGQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCA3MTIyMDBjZTY5M2M5ZDVkYWIxODBhMDcxNWZlYjdhMWY5ZjYzNTMzLi5kYzE2
MGRmM2RjMDQwZTRjNDEwM2ExZjg0Y2VkNjAwNTc1MzQ0YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg5OSw5ICs4OTksOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHBhaXI8
SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMu
YWRkKG5hbWUsIHZhbHVlKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kICs9ICIsICIgKyB2YWx1ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9yZXF1ZXN0SGVhZGVycy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlm
ICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kICs9ICIsICIg
KyB2YWx1ZTsKIH0KIAogU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwCmluZGV4IDE1NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEuLjRi
M2I3MDA1OGFlODM0ZmM1NzUwNTU3NjQ5NWVhYTE4YTA1MzkyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIFZhbHVlIEZ1bklkOjpldmFs
dWF0ZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzZXZlcmFsIG5vZGVzIHdpdGgg
dGhlIHNhbWUgaWQsIGlkKCkgc2hvdWxkIHJldHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAgICAv
LyBJbiBXZWJLaXQsIGdldEVsZW1lbnRCeUlkIGJlaGF2ZXMgc28sIHRvbywgYWx0aG91Z2ggaXRz
IGJlaGF2aW9yIGluIHRoaXMgY2FzZSBpcyBmb3JtYWxseSB1bmRlZmluZWQuCiAgICAgICAgIE5v
ZGUqIG5vZGUgPSBjb250ZXh0U2NvcGUtPmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZExpc3QuY2hh
cmFjdGVycygpICsgc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgIGlmIChu
b2RlICYmIHJlc3VsdFNldC5hZGQobm9kZSkuc2Vjb25kKQorICAgICAgICBpZiAobm9kZSAmJiBy
ZXN1bHRTZXQuYWRkKG5vZGUpLmlzTmV3S2V5KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChu
b2RlKTsKICAgICAgICAgCiAgICAgICAgIHN0YXJ0UG9zID0gZW5kUG9zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQYXRoLmNwcAppbmRleCBkOWQxZmQ0N2Q2NjRmMGM5YmRmMTQ2YWMyMWRkOTNhZGZhYjRhMjA0
Li5iNzA2YmNhYTc1YTFlNmRmYTYxYzdhMmIwNzQzZDllMjY4Y2NhZTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQYXRoLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgTG9jYXRpb25QYXRoOjpldmFs
dWF0ZShOb2RlU2V0JiBub2RlcykgY29uc3QKIAogICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9k
ZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgbWF0Y2hlcy5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1hdGNoZXNbbm9kZUluZGV4XTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQu
YWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAgICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVw
bGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUpLmlzTmV3S2V5KQogICAgICAgICAg
ICAgICAgICAgICBuZXdOb2Rlcy5hcHBlbmQobm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDU4Y2Q4Nzk4ZWIzNjNh
ZWJiNmI0OGMzMzk1NjcwMGZmMTA3NWE1NzcuLmNmMWI5YzdkMmUwN2E3NzBhMTdkMDU0Y2JiYTQ5
M2RjZTE4Yjk2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjQw
LDcgKzI0MCw3IEBAIFZhbHVlIFVuaW9uOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByaHNOb2Rlcy5zaXplKCk7ICsraSkgewogICAgICAgICBOb2Rl
KiBub2RlID0gcmhzTm9kZXNbaV07Ci0gICAgICAgIGlmIChub2Rlcy5hZGQobm9kZSkuc2Vjb25k
KQorICAgICAgICBpZiAobm9kZXMuYWRkKG5vZGUpLmlzTmV3S2V5KQogICAgICAgICAgICAgcmVz
dWx0U2V0LmFwcGVuZChub2RlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCmluZGV4IGUzZGNlOGM1YWM0ZDZmNmNlNDc2OThlMmYz
YTcxMjUyNjEyMmM3NTkuLjhhNWY4MzIzN2JhMmQ1Y2Q4Njk1ZDE1NjJiOTk0ZGJhNTkxNjRiOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcApA
QCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgV2ViSFRUUExvYWRJbmZvOjpzZXRFbmNvZGVkRGF0YUxl
bmd0aChsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiAKIHN0YXRpYyB2b2lkIGFkZEhlYWRl
cihIVFRQSGVhZGVyTWFwKiBtYXAsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtYXAtPmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZhbHVlKTsKKyAg
ICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUp
OworICAgIGlmICghcmVzdWx0LmlzTmV3S2V5KQorICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25k
ICs9ICIsICIgKyBTdHJpbmcodmFsdWUpOwogfQogCiB2b2lkIFdlYkhUVFBMb2FkSW5mbzo6YWRk
UmVxdWVzdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKaW5k
ZXggZWMyMTJlNTE3N2NjNTg2MzhjZTAxNzJjNzVmMTA4ZDNmMzc1MmQzYi4uYjZmZTg1MmFmNzNi
NDU0Y2U4ZjZkMDAzZjcwNThjMTg2MmNkZmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBXZWJV
UkxSZXNwb25zZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViU3RyaW5nJgogICAgIC8vIEZJWE1FOiBBZGQgYW4gYWRkSFRUUEhlYWRlckZpZWxkIG1l
dGhvZCB0byBSZXNvdXJjZVJlc3BvbnNlLgogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG1hcCA9
IG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAg
U3RyaW5nIHZhbHVlU3RyKHZhbHVlKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPQorICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPQog
ICAgICAgICBjb25zdF9jYXN0PEhUVFBIZWFkZXJNYXAqPigmbWFwKS0+YWRkKG5hbWUsIHZhbHVl
U3RyKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kICs9ICIsICIgKyB2YWx1ZVN0cjsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXItPnNlY29uZCArPSAiLCAiICsgdmFsdWVTdHI7CiB9CiAKIHZvaWQgV2Vi
VVJMUmVzcG9uc2U6OmNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCmluZGV4IGM0NDUwZjc0OWVlMWZhOTY0NWE2MTMw
ZWM4YmMzYmVmOTU0NGExNGEuLjFhMzFlYWJkZDM0ODRhYTEyYzk0NzdhY2RhZjBkMzNhM2EzYTc4
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcApAQCAtNTEsMTAgKzUxLDkgQEAgc3Rh
dGljIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiBjbGFzc0ZhY3RvcnkoY29uc3QgQ0xTSUQmIGNsc2lk
KQogICAgIHR5cGVkZWYgSGFzaE1hcDxDTFNJRCwgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+LCBDTFNJ
REhhc2gsIENMU0lESGFzaFRyYWl0cz4gRmFjdG9yeU1hcDsKICAgICBzdGF0aWMgRmFjdG9yeU1h
cCYgZmFjdG9yaWVzID0gKm5ldyBGYWN0b3J5TWFwOwogCi0gICAgcGFpcjxGYWN0b3J5TWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZmFjdG9yaWVzLmFkZChjbHNpZCwgMCk7Ci0gICAgQ09N
UHRyPElDbGFzc0ZhY3Rvcnk+JiBmYWN0b3J5ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAg
Ym9vbCBhZGRlZCA9IHJlc3VsdC5zZWNvbmQ7Ci0gICAgaWYgKGFkZGVkICYmIEZBSUxFRChEbGxH
ZXRDbGFzc09iamVjdChjbHNpZCwgX191dWlkb2YoZmFjdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPigmZmFjdG9yeSkpKSkKKyAgICBGYWN0b3J5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
ZmFjdG9yaWVzLmFkZChjbHNpZCwgMCk7CisgICAgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+JiBmYWN0
b3J5ID0gcmVzdWx0Lml0ZXItPnNlY29uZDsKKyAgICBpZiAocmVzdWx0LmlzTmV3S2V5ICYmIEZB
SUxFRChEbGxHZXRDbGFzc09iamVjdChjbHNpZCwgX191dWlkb2YoZmFjdG9yeSksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmZmFjdG9yeSkpKSkKICAgICAgICAgZmFjdG9yeSA9IDA7CiAKICAg
ICByZXR1cm4gZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnRDb2RlcnMuaAppbmRleCBhMmZmYTBmMjUwYmU4OTA2MTI0MDcxY2Q0ODI5ZDc4OGI3
YjhhZjM4Li5kMWZlMjMzZWUwYWMxYjAzZjMxMDkzNzhiZTYyYmI5MzJjOWMzNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0x
NjEsNyArMTYxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKICAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgICAgIGlmICghdGVtcEhhc2hNYXAuYWRkKGtleSwgdmFsdWUpLnNlY29uZCkgewor
ICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoa2V5LCB2YWx1ZSkuaXNOZXdLZXkpIHsK
ICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCBtYXAgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmll
ZCBrZXksIGJhaWwuCiAgICAgICAgICAgICAgICAgZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzYzJmMTRjZWQwM2U4ZjA5YmYwNTM5Njg4OWIx
ODRlZjhiODVjNTllLi43NmEwYzFhMGRmZWI5NTRlZmU1NWRmYWZhZDdhYjI3NzY5OTk4ODFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAg
LTEwMCwxNSArMTAwLDE1IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPENvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGU+IENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKFJ1
bkxvb3AqIHJ1bkxvb3ApCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN5bmNNZXNzYWdlU3Rh
dGVNYXBNdXRleCgpKTsKLSAgICBwYWlyPFN5bmNNZXNzYWdlU3RhdGVNYXA6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBzeW5jTWVzc2FnZVN0YXRlTWFwKCkuYWRkKHJ1bkxvb3AsIDApOworICAg
IFN5bmNNZXNzYWdlU3RhdGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW5jTWVzc2FnZVN0YXRl
TWFwKCkuYWRkKHJ1bkxvb3AsIDApOwogCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAg
ICAgIEFTU0VSVChyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQu
Zmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NF
UlQocmVzdWx0Lml0ZXItPnNlY29uZCk7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlci0+c2Vj
b25kOwogICAgIH0KIAogICAgIFJlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBzeW5jTWVzc2FnZVN0
YXRlID0gYWRvcHRSZWYobmV3IFN5bmNNZXNzYWdlU3RhdGUocnVuTG9vcCkpOwotICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gc3luY01lc3NhZ2VTdGF0ZS5nZXQoKTsKKyAgICByZXN1bHQuaXRl
ci0+c2Vjb25kID0gc3luY01lc3NhZ2VTdGF0ZS5nZXQoKTsKIAogICAgIHJldHVybiBzeW5jTWVz
c2FnZVN0YXRlLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURp
Y3Rpb25hcnkuY3BwCmluZGV4IDJmOTA1ZWM2YTEyNDg3MGQ4OTdiYTM3MDA0YmU4Y2FkMmZiMmMx
NzQuLmM3OGRhNmY2YWQyMzAzYWVhNjBhOWM5Yjc1YWU2OGRkN2I2Nzk0N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBA
IE11dGFibGVEaWN0aW9uYXJ5Ojp+TXV0YWJsZURpY3Rpb25hcnkoKQogCiBib29sIE11dGFibGVE
aWN0aW9uYXJ5OjphZGQoY29uc3QgU3RyaW5nJiBrZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAg
ICBzdGQ6OnBhaXI8TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIGl0ZW0pOwotICAgIHJldHVybiByZXN1bHQuc2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVtKTsKKyAgICByZXR1cm4gcmVzdWx0Lmlz
TmV3S2V5OwogfQogCiBib29sIE11dGFibGVEaWN0aW9uYXJ5OjpzZXQoY29uc3QgU3RyaW5nJiBr
ZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8TWFwVHlwZTo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOwotICAgIHJldHVybiByZXN1bHQu
c2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5zZXQoa2V5LCBp
dGVtKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3S2V5OwogfQogCiB2b2lkIE11dGFibGVEaWN0
aW9uYXJ5OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9V
c2VyTWVzc2FnZUNvZGVycy5oCmluZGV4IDk2NzJmMjhkZjM3YWFiOTExZmRjMjgxYmUyYzY4MjAw
MDVjMmFiZjEuLjljZjQ2MDlhNDU1YjgwZTlhMzFjMWU2YzE2NzUxMzBhNjk4ZGQ5ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCkBAIC0yODUsOCArMjg1LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VD
b2RlcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAg
ICAgIHN0ZDo6cGFpcjxJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbWFwLnNldChrZXksIGVsZW1lbnQucmVsZWFzZSgpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlv
bmFyeTo6TWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5zZXQoa2V5LCBlbGVtZW50LnJl
bGVhc2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdLZXkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5Y2U1NDQwN2U1NjlkNTAz
MGY4MWRhYmExZWZkY2I5OWJmYjBhMGY5Li5hMThiNDZlNjFmNmJjY2FjMDY3YjE3OTY3MDI5NjJh
ZjhlMzk4MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMjcxLDE4ICsyNzEsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEJhY2tG
b3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWwKICAgICBN
RVNTQUdFX0NIRUNLX1VSTChvcmlnaW5hbFVSTCk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJs
KTsKIAotICAgIHN0ZDo6cGFpcjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmFkZChpdGVtSUQsIDApOwot
ICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIC8vIE5ldyBpdGVtLgotICAgICAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmln
aW5hbFVSTCwgdXJsLCB0aXRsZSwgYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmRE
YXRhLnNpemUoKSwgaXRlbUlEKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmFkZChpdGVtSUQsIDApOwor
ICAgIGlmIChyZXN1bHQuaXNOZXdLZXkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgdXJsLCB0aXRsZSwg
YmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSwgaXRlbUlEKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFVwZGF0ZSBleGlzdGluZyBpdGVtLgot
ICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7Ci0g
ICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldFVSTCh1cmwpOwotICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kLT5zZXRUaXRsZSh0aXRsZSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldEJh
Y2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6
ZSgpKTsKKyAgICByZXN1bHQuaXRlci0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVS
TCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZC0+c2V0VVJMKHVybCk7CisgICAgcmVzdWx0Lml0
ZXItPnNlY29uZC0+c2V0VGl0bGUodGl0bGUpOworICAgIHJlc3VsdC5pdGVyLT5zZWNvbmQtPnNl
dEJhY2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEu
c2l6ZSgpKTsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNlYmJiMzBjMWFmM2I0ZDlj
MWQyMzliMDhmYmY0ZTVhZTc2ZWY0NmUuLmRhNzIyNjllODY1Yzc4NjNmMTk5NDNkMDkwZmI0NWMw
MTA0NDM4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcApAQCAtNjcsMTIgKzY3LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKE5vZGUqCiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVDYWNo
ZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKG5vZGUsIDAp
OwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFu
ZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChub2RlLCAw
KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPihyZXN1bHQuaXRlci0+c2Vjb25kKTsKIAogICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6OmNyZWF0ZShub2RlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5v
ZGVIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0
KCk7CiAgICAgcmV0dXJuIG5vZGVIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGU5NGVkZmQzNGI4Yjg5
ZDM2ZTlkM2U3ZmRiMGM0N2EwMDUyNWUxMTkuLjhmNTE1NjlkYzQwODZlODQ3NGFlODM1OWIyZjNm
NmY2NDQ1MzcwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShSYW4KICAg
ICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5k
bGVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJh
bmdlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVm
UHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAg
ICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRk
KHJhbmdlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0tleSkKKyAgICAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXItPnNlY29uZCk7
CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUocmFuZ2UpOwotICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXItPnNlY29uZCA9
IHJhbmdlSGFuZGxlLmdldCgpOwogICAgIHJldHVybiByYW5nZUhhbmRsZS5yZWxlYXNlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyN2U0YzcyZWExZjc0
ZDVlMTE1NTQ1NGI4YTM1YzljYWUzNjlhOGVjLi5jYzEzOWJlMDY4OGJmYmFjNmQwOTdjM2ZkODkw
ZjczMmI3ZGQxYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0x
MTUsNyArMTE1LDcgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIG1fbm90aWZpY2F0aW9uTWFw
LnNldChub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbklEKTsKICAgICBtX25vdGlmaWNhdGlvbklE
TWFwLnNldChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKICAgICAKLSAgICBOb3RpZmlj
YXRpb25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5h
ZGQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRf
dD4oKSkuZmlyc3Q7CisgICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXI7CiAgICAgaXQtPnNlY29uZC5hcHBl
bmQobm90aWZpY2F0aW9uSUQpOwogICAgIAogICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
LT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uVVJMKCku
c3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCksIG5vdGlmaWNhdGlvbi0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3RpZmlj
YXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGMxYmEwNTBjZjZkYTFkN2FhMTYxNzYxNDM3ZjRjNDhkNWFkZTIxZDEu
LmJlYmI5NmQ1YWJlY2I5YjAwNDBkNTVhZWM4ODgzOGQ1NTY0MWQwNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTE4LDE2ICs1MTgsMTYgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9y
IHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFy
Z2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUg
c3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCi0gICAgc3Rk
OjpwYWlyPEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+OjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIDApOwotICAgIGlmIChyZXN1bHQuc2Vj
b25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMp
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+OjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdLZXkp
IHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXItPnNlY29uZCA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOwogCiAg
ICAgICAgIC8vIEJhbGFuY2VkIGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJlbW92ZVdlYlBh
Z2UuCiAgICAgICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOwogICAgIH0KIAotICAgIEFTU0VSVChy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyLT5zZWNvbmQpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQpAQCAt
NzM5LDEzICs3MzksMTMgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VH
cm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCkKIAogV2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nl
c3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBwYWdlR3JvdXBEYXRhKQog
ewotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJv
eHk+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VHcm91cE1hcC5hZGQocGFnZUdy
b3VwRGF0YS5wYWdlR3JvdXBJRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAg
ICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShwYWdlR3JvdXBEYXRhKTsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX3BhZ2VHcm91cE1hcC5hZGQocGFnZUdyb3VwRGF0YS5wYWdlR3JvdXBJRCwgMCk7
CisgICAgaWYgKHJlc3VsdC5pc05ld0tleSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVy
LT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlci0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJv
eHk6OmNyZWF0ZShwYWdlR3JvdXBEYXRhKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmZp
cnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyLT5zZWNvbmQuZ2V0KCk7
CiB9CiAKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGMxMzBiNWU4NzE0ZDgxNGUyYTQ0MmEwMDZhMjAzOTkwOWU1MDIwNDUu
LmVlYzBmMWVlYTVlNzM2YjRmN2VmMjU4ZmUzYTA3NzhiYzljMjEwNTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBt
b3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBw
YWlyLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpl
dmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6CisKIDIwMTItMDMtMjggIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIGdlbmVyYXRlLWd0
ay1kb2MgZG9lc24ndCBjb3BlIHdpdGggY3VzdG9tIGJ1aWxkIGRpcmVjdG9yeQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCAwNTgzNDg2ODQ5ZDVjN2VmNTU0YzY3N2E2YzIzZjRmYzk4
YjhkMWI5Li5jY2M0NmVkMzYxNjQzNjkzNjM0M2M4ZmJkOGY3YTM3OTM3NmI2M2MxIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKEpTQ29udGV4dFJlZiBj
b250ZXh0LCB1CiAgICAgaWYgKCF3b3JsZElEKQogICAgICAgICB3b3JsZC5hZG9wdChXS0J1bmRs
ZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFdLUmV0YWlu
UHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3
b3JsZElELCAwKS5maXJzdC0+c2Vjb25kOworICAgICAgICBXS1JldGFpblB0cjxXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuaXRl
ci0+c2Vjb25kOwogICAgICAgICBpZiAoIXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdvcmxkU2xv
dC5hZG9wdChXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKSk7CiAgICAgICAgIHdvcmxk
ID0gd29ybGRTbG90Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134383</attachid>
            <date>2012-03-28 13:32:19 -0700</date>
            <delta_ts>2012-03-28 16:15:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120328173217.patch</filename>
            <type>text/plain</type>
            <size>177248</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YzcxNzYyNDNlODE4ZDY0MDZjYjE1ZGJmMTQxNDRjNGY4YjQ0MDczLi41YWU4Mjk5OTI4NDI3OTg2
ZTVjYTUzN2NkMjBmZTlmNjBmNTQzODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yNyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBPU1IgZXhpdCBz
aG91bGQgbm90IGdlbmVyYXRlIGFuIGV4aXQgZm9yIHZhcmlhYmxlcyBvZiBpbmxpbmVlcyBpZiB0
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggZDgwYWI4NGQwNzk1NmYyNTJmOTFhOGQ0MDBiZTg0OTk0ZDljOTJhNS4uOGYyMDk2
MDRmM2I2NWE1MzlmMGI2NzE2NmFhZGVjNTUyNWRhNGU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAor
MjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWly
YUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4g
YSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEhhc2hUYWJsZTw+OjphZGQoKSBhbmQgZGVyaXZhdGUgZnVu
Y3Rpb25zIHJldHVybiBhbiBBZGRSZXN1bHQgc3RydWN0IGluc3RlYWQKKyAgICAgICAgb2YgYSBw
YWlyLiBUaGlzIHN0cnVjdCBjb250YWlucyBjb250YWlucyAnaXRlcmF0b3InIGFuZCAnaXNOZXdF
bnRyeScgbWVtYmVycywgdGhhdCBhcmUKKyAgICAgICAgbW9yZSByZWFkYWJsZSBhdCBjYWxsc2l0
ZXMgdGhhbiBwcmV2aW91cyAnZmlyc3QnIGFuZCAnc2Vjb25kJy4KKworICAgICAgICAqIHd0Zi9I
YXNoQ291bnRlZFNldC5oOgorICAgICAgICAoSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV1RG
Ojo6OmFkZCk6CisgICAgICAgICogd3RmL0hhc2hNYXAuaDoKKyAgICAgICAgKEhhc2hNYXApOgor
ICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6OjpzZXQpOgorICAgICAgICAqIHd0Zi9IYXNo
U2V0Lmg6CisgICAgICAgIChIYXNoU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEY6Okhhc2hU
YWJsZUFkZFJlc3VsdDo6SGFzaFRhYmxlQWRkUmVzdWx0KToKKyAgICAgICAgKEhhc2hUYWJsZUFk
ZFJlc3VsdCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAoSGFzaFRhYmxlKToKKyAgICAgICAg
KFdURjo6SGFzaFRhYmxlOjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAgICAgIChX
VEY6Ojo6YWRkUGFzc2luZ0hhc2hDb2RlKToKKyAgICAgICAgKiB3dGYvTGlzdEhhc2hTZXQuaDoK
KyAgICAgICAgKExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAo
V1RGOjo6Omluc2VydEJlZm9yZSk6CisgICAgICAgICogd3RmL1JlZlB0ckhhc2hNYXAuaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvU3BlY3Ry
dW0uaDoKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmFkZCk6CisgICAgICAgICogd3RmL1dURlRo
cmVhZERhdGEuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6CisgICAg
ICAgICogd3RmL1dURlRocmVhZERhdGEuaDoKKyAgICAgICAgKElkZW50aWZpZXJUYWJsZSk6Cisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6YWRkVG9T
dHJpbmdUYWJsZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UpOgor
CiAyMDEyLTAzLTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBJbXBsZW1lbnQgUGxhdGZvcm1TdHJhdGVnaWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGZkN2YxY2Q1ZjdlMWY3ZjVlMjEyMDE5NDFiZjI4ODhiZjZmYWU5OC4uNjYwMzcwODk0YzY4
NWRiNjhhYTJkYzQ2ZjliNWZkMGFkMDE5ZWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3OSBA
QAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2
ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1
cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQg
b2YgYSBwYWlyLiBObyBuZXcgdGVzdHMsIGp1c3QgYSByZWZhY3RvcmluZy4KKworICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UXVvdGFUcmFja2VyOjp1cGRhdGVEYXRhYmFzZVNpemUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NT2JqZWN0SGFzaFRhYmxlTWFwOjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTVN0cnVjdHVyZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzdGFydE9i
amVjdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6d3JpdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bnBDcmVhdGVWOFNjcmlwdE9iamVjdCk6CisgICAgICAgICogYnJpZGdlL0lkZW50aWZpZXJS
ZXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWRlbnRpZmllclJlcDo6Z2V0KToKKyAgICAgICAg
KiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoT2JqZWN0TWFwOjphZGQpOgorICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Z2V0
Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YSk6CisgICAgICAgICogY3NzL0NTU1Nl
Z21lbnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRG
YWNlOjpnZXRGb250RGF0YSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6YXBwbHlJbmhlcml0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5VmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6
CisgICAgICAgICogY3NzL0NTU1ZhbHVlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQ
b29sOjpjcmVhdGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUZvbnRGYW1pbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAqIGRvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjphZGRCdXR0b24pOgorICAgICAgICAqIGRvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0
aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjppbmNyZW1lbnRTY29waW5nTGV2
ZWwpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6d2luZG93TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9j
dW1lbnROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDU1NDYW52
YXNFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRJdGVtcyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50T3JkZXJlZE1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjphZGQpOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmR1bXBTdGF0aXN0aWNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxl
bWVudHNCeUNsYXNzTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb2xsZWN0TWF0Y2hp
bmdPYnNlcnZlcnNGb3JNdXRhdGlvbik6CisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6aW5pdCk6CisgICAgICAgICogZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmlu
Z0RhdGE6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxl
Y3Rpb246OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OmRpZmYpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
clByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZv
cm1TZWFyY2gpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVh
a3BvaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck9iamVjdDo6c2V0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck9iamVjdDo6c2V0QXJyYXkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjphZGRFbnRyeSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpm
aW5kT3JDcmVhdGVDYWNoZUdyb3VwKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6
cGFnZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZCk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAqIHBh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVu
dDo6Y29tcGlsZVN1YnRhcmdldExpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5hcnlQcm9wZXJ0eUxpc3RQbGFu
Ojp3cml0ZUludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxh
bjo6d3JpdGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxh
bjo6d3JpdGVJbnRlZ2VyQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjphZGRU
aWxlSm9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERlcml2ZWRG
b250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxp
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJBVFNVSS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplQVRTVVN0eWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hh
cmFjdGVyU2VxdWVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQ
bGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRTaXplRm9udERhdGE6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRTdHlsZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjph
ZGQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAg
ICAoSFRUUEhlYWRlck1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFk
ZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAg
ICAqIHBsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRo
Rm9yVGV4dFJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5jeU9uRmxvd1Ro
cmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSZWdpb246OnNldFJlbmRlckJveFJlZ2lvbkluZm8pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
TWFwOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OmltcG9ydEl0ZW0p
OgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6c2V0UmVxdWVzdEhlYWRlckludGVybmFsKToKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5j
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bklkOjpldmFsdWF0ZSk6Cisg
ICAgICAgICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6TG9j
YXRpb25QYXRoOjpldmFsdWF0ZSk6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpVbmlvbjo6ZXZhbHVhdGUpOgorCiAyMDEyLTAzLTI4
ICBQZXRlciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggUnVudGltZSwgTmV0d29y
ayBhbmQgRE9NIGRvbWFpbnMgdG8gdHlwZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDM0NDkxNmZhMDJjZjQ4YmZjYTNhMzZhYWQ4NjI3NjRiYWY5ZThiZDcuLjY4MGExYjdiYjM5
MmNmM2UwOWY0MDA0NjFhY2QxOWEzNDdmYzFmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBG
aWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNoTWFwPD46
OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gdXNlIEFk
ZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4KKworICAgICAgICAqIHNyYy9XZWJIVFRQTG9hZElu
Zm8uY3BwOgorICAgICAgICAoV2ViS2l0OjphZGRIZWFkZXIpOgorICAgICAgICAqIHNyYy9XZWJV
UkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFJlc3BvbnNlOjphZGRIVFRQ
SGVhZGVyRmllbGQpOgorCiAyMDEyLTAzLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJIChKU0VQKTog
SW50cm9kdWNpbmcgV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCA2YjBjNWViMGY5ZDFhMDQ3N2ViY2RlMmE3ZmYzZGU5MDBkYzFmZmZjLi4zNGU1NjQyZjM0Mzdl
YzYxYjIyMzJkM2RjNzdjYWY5NDY3NmNjMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8u
b2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQg
cmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0
ZWFkIG9mIGEgcGFpci4KKworICAgICAgICAqIFdlYktpdENPTUFQSS5jcHA6CisgICAgICAgIChj
bGFzc0ZhY3RvcnkpOgorCiAyMDEyLTAzLTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbiB1c2VzIEZy
YW1lIGZvciBjb250ZXh0IHJhdGhlciB0aGFuIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDAxYWEz
NGY4MGJiOWMzMGZmYjY3MmQ4ZDk5MWRmNWEyMTU2YzFmNC4uMTBlZTJmYjJjMTY2OWYzZDIwNDYx
ZTk2MDI3ZjkyZDMwYWEwZTY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAz
LTI4ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUg
ZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
ICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBTaGFy
ZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpNdXRhYmxlRGljdGlv
bmFyeTo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6TXV0YWJsZURpY3Rpb25hcnk6OnNldCk6Cisg
ICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZXNzYWdlRGVjb2Rlcjo6YmFzZURlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkQmFj
a0ZvcndhcmRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlBhZ2VHcm91
cCk6CisKIDIwMTItMDMtMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTA5ODI2KTogQ2FuJ3QgdHlwZSBpbnRvIEZsYXNoIHRl
eHQgZmllbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CmluZGV4IDYxM2U1MzhiYzc1ZGIzNjlmN2RmZjdiNjc5ODkyY2I3MDJiMzIxMzYuLjlhY2EwYzdl
MThjYTVjY2NjZWU3MzU5ZWEzOTFjMjgzNGIwYTFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBKU0Nh
bGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIHZvaWQgc2V0UHJp
dmF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7Ci0gICAgICAgICAgICBtX3By
b3BlcnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5z
ZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlNYXAu
YWRkKHByb3BlcnR5TmFtZS5pbXBsKCksIGVtcHR5KS5pdGVyYXRvci0+c2Vjb25kLnNldChnbG9i
YWxEYXRhLCBvd25lciwgdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lk
IGRlbGV0ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRleCA1YzI0OWFiYWY2NWVi
YmE4OTJmOWY1MzAzMzRjNWRiYzBkOTViOTlkLi4xMzUzNGQwNzhjNmI5Yjg3ODFmMDk5NmE2YmI5
ODhiMzdmNGRiZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAK
QEAgLTE2NCw3ICsxNjQsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xh
c3NDb250ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQwogCiBPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBPd25QdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEg
PSBleGVjLT5nbG9iYWxEYXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIp
LmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNv
bnRleHREYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFkZCh0aGlz
LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghY29udGV4dERhdGEpCiAgICAg
ICAgIGNvbnRleHREYXRhID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMpKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCA0YTZmNDY1M2VhYjg5MmZjNmRhMGRiOTNjYjQ5Y2IxNTcxYTZhZGZi
Li4wZjA4NTc5NTMzNjQwNGM1YTA0ZmExZTdiY2RjMTZhMDI3ZTFmMWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMjAwLDEwICsyMDAsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQsIFJlZ2lzdGUKIHsKICAg
ICBpbnQgaW5kZXggPSBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCk7CiAgICAgU3ltYm9sVGFibGVF
bnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7Ci0gICAgcGFp
cjxTeW1ib2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRk
KGlkZW50LmltcGwoKSwgbmV3RW50cnkpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVz
dWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0LmZp
cnN0LT5zZWNvbmQuZ2V0SW5kZXgoKSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewor
ICAgICAgICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRl
eCgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjE1LDkgKzIxNSw5IEBA
IGludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBib29sIGlzQ29uc3RhbnQpCiB7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5z
aXplKCk7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/
IFJlYWRPbmx5IDogMCk7Ci0gICAgcGFpcjxTeW1ib2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlm
ICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZC5n
ZXRJbmRleCgpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFi
bGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKKyAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgp
OwogICAgIHJldHVybiBpbmRleDsKIH0KIApAQCAtOTY4LDI0ICs5NjgsMjQgQEAgUGFzc1JlZlB0
cjxMYWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJl
Z2lzdGVySUQqIGNvbmQKIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudChj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5p
bXBsKCk7Ci0gICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJz
KCkpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSAvLyBuZXcgZW50cnkKKyAgICBJZGVudGlmaWVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJs
b2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgbV9jb2RlQmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihtX2dsb2JhbERh
dGEsIHJlcCkpOwogCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZENvbnN0YW50VmFsdWUoSlNWYWx1ZSB2KQogewogICAgIGludCBpbmRleCA9IG1f
bmV4dENvbnN0YW50T2Zmc2V0OwogCi0gICAgcGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodiksIG1fbmV4dENv
bnN0YW50T2Zmc2V0KTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIEpTVmFsdWVNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2KSwg
bV9uZXh0Q29uc3RhbnRPZmZzZXQpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAg
ICAgICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7CiAgICAgICAgICsrbV9uZXh0Q29uc3RhbnRP
ZmZzZXQ7CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVlKHYpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAg
aW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIHJldHVybiAmbV9jb25zdGFu
dFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogfQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51
bWJlcikKICAgICAvLyB3b3JrIGNvcnJlY3RseSB3aXRoIE5hTiBhcyBhIGtleS4KICAgICBpZiAo
aXNuYW4obnVtYmVyKSB8fCBudW1iZXIgPT0gSGFzaFRyYWl0czxkb3VibGU+OjplbXB0eVZhbHVl
KCkgfHwgSGFzaFRyYWl0czxkb3VibGU+Ojppc0RlbGV0ZWRWYWx1ZShudW1iZXIpKQogICAgICAg
ICByZXR1cm4gZW1pdExvYWQoZHN0LCBqc051bWJlcihudW1iZXIpKTsKLSAgICBKU1ZhbHVlJiB2
YWx1ZUluTWFwID0gbV9udW1iZXJNYXAuYWRkKG51bWJlciwgSlNWYWx1ZSgpKS5maXJzdC0+c2Vj
b25kOworICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBK
U1ZhbHVlKCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQogICAgICAg
ICB2YWx1ZUluTWFwID0ganNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0
LCB2YWx1ZUluTWFwKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIpCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1h
cCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsK
KyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIu
aW1wbCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApCiAgICAg
ICAgIHN0cmluZ0luTWFwID0ganNPd25lZFN0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIu
dXN0cmluZygpKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0luTWFw
KSk7CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRk
Q29uc3RhbnRCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7
Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVy
LmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0g
bV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwog
ICAgIGlmICghc3RyaW5nSW5NYXApIHsKICAgICAgICAgc3RyaW5nSW5NYXAgPSBqc1N0cmluZyhn
bG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKICAgICAgICAgYWRkQ29uc3RhbnRW
YWx1ZShzdHJpbmdJbk1hcCk7CkBAIC0xNzE4LDEwICsxNzE4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlv
bkJvZHlOb2RlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TGF6eU5ld0Z1
bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24pCiB7Ci0g
ICAgc3RkOjpwYWlyPEZ1bmN0aW9uT2Zmc2V0TWFwOjppdGVyYXRvciwgYm9vbD4gcHRyID0gbV9m
dW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAwKTsKLSAgICBpZiAocHRyLnNlY29uZCkKLSAg
ICAgICAgcHRyLmZpcnN0LT5zZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1h
a2VGdW5jdGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0aW9uKSk7Ci0gICAgcmV0dXJuIGVtaXROZXdG
dW5jdGlvbkludGVybmFsKGRzdCwgcHRyLmZpcnN0LT5zZWNvbmQsIHRydWUpOworICAgIEZ1bmN0
aW9uT2Zmc2V0TWFwOjpBZGRSZXN1bHQgcHRyID0gbV9mdW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0
aW9uLCAwKTsKKyAgICBpZiAocHRyLmlzTmV3RW50cnkpCisgICAgICAgIHB0ci5pdGVyYXRvci0+
c2Vjb25kID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24obV9nbG9i
YWxEYXRhLCBmdW5jdGlvbikpOworICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChk
c3QsIHB0ci5pdGVyYXRvci0+c2Vjb25kLCB0cnVlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5z
aWduZWQgaW5kZXgsIGJvb2wgZG9OdWxsQ2hlY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmI5NWNhZmI2ODI2M2E5
YmY1MTBhYTRlNDIyN2Y1ZWE0M2EzZWU5OC4uY2Q5ZGUyMmYwNTk4Nzk4ZTI3YjI3NzFiOWI4N2U0
NTEzNmE5NzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjU2LDkgKzI1Niw5IEBAIFJlZ2lzdGVySUQqIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEdldHRlclNl
dHRlclBhaXIgcGFpcihub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPigwKSk7Ci0gICAg
ICAgICAgICBzdGQ6OnBhaXI8R2V0dGVyU2V0dGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0
ID0gbWFwLmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKLSAgICAgICAgICAgIGlmICgh
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5zZWNv
bmQgPSBub2RlOworICAgICAgICAgICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbWFwLmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKKyAgICAgICAgICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQuc2Vjb25kID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0
aGUgcmVtYWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCA0NDFjOWFlZDMzMWM4YjNlYjhkNzYyMzQw
Y2JhOTM1MzRkYzUzNGVhLi5lZGU4YTliYTI0OGI5YTg5NGI3OTE3NGVkNWQzMjBmODhmNWNjYjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgaW5saW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNl
bGwpCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgc2V0
IC0gaWYgc28sCiAgICAgLy8gd2UndmUgYWxyZWFkeSByZXRyYW5zbGF0ZWQgaXQsIG5vdGhpbmcg
dG8gZG8gaGVyZS4KLSAgICBpZiAoIW1fZnVuY3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJs
ZSkuc2Vjb25kKQorICAgIGlmICghbV9mdW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxl
KS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBm
dW5jdGlvbi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhl
YygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMu
Y3BwCmluZGV4IDk2OTEwMWU4N2M1MzhjOTVkMTdkMTY1MWFlMmFjNWQ2ZDM2YjI1OWQuLmFjMmMz
ZGIyMWNmNzRhMWE0ZDY0YjQ2ODlmZjE2ZmVmZTdiZDFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTM4LDEyICszOCwxMiBA
QCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNv
ZGVkQ29kZU1hcEZvcihDb2RlQmxvY2sqCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRD
b2RlTWFwKCkpOwogICAgIAotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPENvZGVCbG9jayosIFZlY3Rv
cjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
X2RlY29kZWRDb2RlTWFwcy5hZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5l
T2Zmc2V0PigpKTsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQo
Y29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKICAgICAKLSAg
ICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRl
Y29kZShyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kKTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0
dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZM
QUdTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCA5Mjg1MDU2M2FlZDUxMTUzOTdjYWM4YTQyMjc1OGIwNzRiODZhNGEzLi5mMGRhNmNj
MDFiNzBlODc5YmI5MDk3OGM4YmE4NzA2ZmFkODY4ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTUxLDExICs1NTEsMTEgQEAg
cHJpdmF0ZToKICAgICAKICAgICBOb2RlSW5kZXggY2VsbENvbnN0YW50KEpTQ2VsbCogY2VsbCkK
ICAgICB7Ci0gICAgICAgIHBhaXI8SGFzaE1hcDxKU0NlbGwqLCBOb2RlSW5kZXg+OjppdGVyYXRv
ciwgYm9vbD4gaXRlciA9IG1fY2VsbENvbnN0YW50Tm9kZXMuYWRkKGNlbGwsIE5vTm9kZSk7Ci0g
ICAgICAgIGlmIChpdGVyLnNlY29uZCkKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9
IGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CisgICAgICAgIEhhc2hN
YXA8SlNDZWxsKiwgTm9kZUluZGV4Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2VsbENvbnN0YW50
Tm9kZXMuYWRkKGNlbGwsIE5vTm9kZSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFrSlND
b25zdGFudCwgT3BJbmZvKGNlbGwpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBpdGVyLmZp
cnN0LT5zZWNvbmQ7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAg
ICB9CiAgICAgCiAgICAgQ29kZU9yaWdpbiBjdXJyZW50Q29kZU9yaWdpbigpCkBAIC0yNTk1LDEw
ICsyNTk1LDEwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFj
a0VudHJ5KEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlCiAKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsgKytpKSB7CiAg
ICAgICAgICAgICBTdHJpbmdJbXBsKiByZXAgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoaSkuaW1w
bCgpOwotICAgICAgICAgICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1faWRlbnRpZmllck1hcC5hZGQocmVwLCBieXRlQ29kZVBh
cnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgICAgICBp
ZiAocmVzdWx0LnNlY29uZCkKKyAgICAgICAgICAgIElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIGJ5dGVDb2Rl
UGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+
bV9jb2RlQmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihieXRlQ29kZVBhcnNlci0+bV9n
bG9iYWxEYXRhLCByZXApKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVz
dWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7ICsraSkgewog
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay0+Z2V0Q29uc3RhbnQoaSArIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKQEAgLTI2MTEsMTIgKzI2MTEsMTIgQEAgQnl0ZUNv
ZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJz
ZXIqIGJ5dGVDb2RlUGFyc2UKICAgICAgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSBi
eXRlQ29kZVBhcnNlci0+bV9lbXB0eUpTVmFsdWVJbmRleDsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhaXI8SlNWYWx1ZU1hcDo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRkKEpTVmFs
dWU6OmVuY29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZD
b25zdGFudFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAg
ICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgICAgIEpTVmFsdWVNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3Rh
bnRSZWdpc3RlcnMoKSArIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2Vy
LT5tX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQodmFsdWUpOwogICAgICAgICAgICAgICAgIGJ5dGVD
b2RlUGFyc2VyLT5tX2NvbnN0YW50cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuZmlyc3QtPnNl
Y29uZDsKKyAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbGxzaXRlQmxvY2tIZWFk
TmVlZHNMaW5raW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
aW5kZXggOWFlMzJjNGIwZGUyYjY5ZTMzMWE1OGFkZmM0MGU0MTUxY2EyZmE5MC4uODJmNmRmN2Qx
MmE4ZWYyNzQ0MDU1MTZkZTY2YzU1MzYzOGI0ZmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKQEAgLTM1NTgsMjQgKzM1NTgsMjQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04oRW5jb2RlZEpTVmFsdWUsIHRvX29iamVjdCkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIEpJ
VFRodW5rczo6Y3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRodW5rR2VuZXJhdG9y
IGdlbmVyYXRvcikKIHsKLSAgICBzdGQ6OnBhaXI8Q1RJU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+
IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChnZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZigpKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25k
ID0gZ2VuZXJhdG9yKGdsb2JhbERhdGEpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25k
OworICAgIENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2Vu
ZXJhdG9yLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50
cnkpCisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBnZW5lcmF0b3IoZ2xvYmFsRGF0
YSk7CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIE5hdGl2ZUV4ZWN1
dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikK
IHsKLSAgICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRp
dmVFeGVjdXRhYmxlPigpKTsKLSAgICBpZiAoIXJlc3VsdC5maXJzdC0+c2Vjb25kKQotICAgICAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9i
YWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGls
ZUNUSU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0
KCkpLCBjb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0
LT5zZWNvbmQuZ2V0KCk7CisgICAgSG9zdEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVF
eGVjdXRhYmxlPigpKTsKKyAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKQorICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpn
bG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29t
cGlsZUNUSU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3Ry
dWN0KCkpLCBjb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMp
CiB7Ci0gICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBl
bnRyeSA9IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRp
dmVFeGVjdXRhYmxlPigpKTsKLSAgICBpZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CisgICAg
SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHVi
TWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIGlm
ICghKmVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQpIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGNvZGU7CiAgICAgICAgIGlmIChnZW5lcmF0b3IpIHsKICAgICAgICAgICAgIGlmIChnbG9i
YWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTM1ODQsOSArMzU4NCw5IEBAIE5hdGl2ZUV4ZWN1dGFi
bGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IE5hdGl2ZUZ1CiAgICAgICAgICAgICAgICAgY29kZSA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElOYXRp
dmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29u
ZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNh
bGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKKyAgICAgICAgZW50cnku
aXRlcmF0b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRh
LCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVD
b25zdHJ1Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJu
IGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVh
ckhvc3RGdW5jdGlvblN0dWJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCBmNTg4NDdmZDI0Njc4ZjJmMjUyYzM1MWI1ZDhkM2JlOWU1MzVhYjcyLi42OTQzOTc3
YTg1YTZmZjdjOTExYTcyYTRjODM5YjY5YzFkNzQzOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3Ry
aWN0T2JqZWN0CiAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0
KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4
QWxyZWFkeVZhbGlkYXRlZCkgewotICAgICAgICAgICAgc3RkOjpwYWlyPE9iamVjdFZhbGlkYXRp
b25NYXA6Oml0ZXJhdG9yLCBib29sPiBwcm9wZXJ0eUVudHJ5SXRlciA9IG9iamVjdFZhbGlkYXRv
ci5hZGQoY29udGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShw
cm9wZXJ0eSkpOwotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5SXRlci5zZWNvbmQpIHsK
LSAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNv
bmQgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICBPYmplY3RWYWxpZGF0
aW9uTWFwOjpBZGRSZXN1bHQgcHJvcGVydHlFbnRyeSA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29u
dGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkp
OworICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
ICAgICAgICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCA9PSBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KTsKICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQu
Z2V0VHlwZShwcm9wZXJ0eSkgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAg
ICAgICAgZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRy
eUl0ZXIuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeUl0ZXIu
Zmlyc3QtPnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOworICAgICAgICAgICAg
ICAgIGZhaWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnku
aXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRv
ci0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCmluZGV4IDc1MTNkMWYxMWZkNDg5NTgyOGFmOGNhZWJlODBhZGExNWI1
ZjU3ZjkuLjY4YTY5M2EzZTllZGUyYTk3OGU3ZjgxNTY0MTNkYjM4ZWNhY2E5NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgYm9vbCBkZWNsYXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50
KQogICAgIHsKICAgICAgICAgYm9vbCBpc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0
TW9kZSA9IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5z
ZWNvbmQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAh
aXNBcmd1bWVudHM7CisgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVk
VmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuaXNOZXdFbnRyeSAmJiBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3VtZW50czsK
ICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNW
YWxpZFN0cmljdE1vZGU7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50cykKICAgICAgICAgICAgIHNl
dEZsYWdzKFNoYWRvd3NBcmd1bWVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSWRlbnRpZmllci5jcHAKaW5kZXggZmJjNTc4N2NlNjU3MmE4ZDg0ZDdjMDRiZjgyMzE3
ZjU4NDgwNmI2My4uMTgyYmNjNDYyMDIyYjRlYzJjYmFjNjg1NWM1MDI5ZjY0YzcxMWZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTExMCwx
MSArMTEwLDExIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogYykKICAgICBpZiAoaXRlciAhPSBsaXRl
cmFsSWRlbnRpZmllclRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwog
Ci0gICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IGlkZW50aWZpZXJUYWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmluZ1Ry
YW5zbGF0b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CisgICAgSGFzaFNl
dDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRk
PGNvbnN0IExDaGFyKiwgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yPihyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oYykpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10
cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xlYW4g
aW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICBSZWZQdHI8U3RyaW5nSW1w
bD4gYWRkZWRTdHJpbmcgPSBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5m
aXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRlZFN0
cmluZyA9IGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRv
cikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogCiAgICAgbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5h
ZGQoYywgYWRkZWRTdHJpbmcuZ2V0KCkpOwogCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBjb25zdCBVQ2hhciogcwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3RyaW5n
SW1wbDo6ZW1wdHkoKTsKICAgICBDaGFyQnVmZmVyPFVDaGFyPiBidWYgPSB7cywgbGVuZ3RofTsg
Ci0gICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJ
ZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yID4oYnVmKTsKKyAgICBIYXNoU2V0PFN0
cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJU
YWJsZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFu
c2xhdG9yID4oYnVmKTsKICAgICAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5z
bGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0
aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vj
b25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAg
IHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0
b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgpAQCAtMjEwLDcgKzIxMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmll
cjo6YWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgcmV0dXJuICpnbG9iYWxEYXRhLT5pZGVu
dGlmaWVyVGFibGUtPmFkZChyKS5maXJzdDsKKyAgICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50
aWZpZXJUYWJsZS0+YWRkKHIpLml0ZXJhdG9yOwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiOWU1YTE4
NTQ0OTIzOTc4NzQ2MDI5MmEyMmVhYjM1MmJmN2I4ZTIyLi4xNDk2MDg3NmI2ZjU4ZDg2N2I5YTVl
MzgyNzVjZWQwNmMyYWNlNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oCkBAIC0xNzgsMTEgKzE3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAg
ICAgICAgQ2hhckJ1ZmZlcjxUPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgICAgIHBhaXI8SGFz
aFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRh
LT5pZGVudGlmaWVyVGFibGUtPmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlmaWVyQ2hhckJ1ZmZl
clRyYW5zbGF0b3I8VD4gPihidWYpOworICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRk
UmVzdWx0IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJC
dWZmZXI8VD4sIElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CiAgICAg
ICAgIAogICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4g
d2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIg
dGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQg
PyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgICAg
IHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0
b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCkBAIC0yNDYs
MTAgKzI0NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxT
dHJpbmdJbXBsPiA+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFw
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBzdGQ6OnBhaXI8
SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFk
ZChVIHZhbHVlKQorICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgSWRlbnRpZmll
clRhYmxlOjphZGQoVSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0
cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZh
bHVlKTsKLSAgICAgICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7Cisg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWJsZS5h
ZGQ8VSwgVj4odmFsdWUpOworICAgICAgICAoKnJlc3VsdC5pdGVyYXRvciktPnNldElzSWRlbnRp
Zmllcih0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMmM2MjBiNGFlNTg5ZDFlYzllNmY0
NzY5MmU0NDZjZmE4NTYzZDQwMS4uMGZmYTA3NmNlYWYwOTYwNGZhYmFiYzBmNjk1N2MxNTZmMWYx
YWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5
NSwxMCArMTk1LDEwIEBAIHZvaWQgSlNBcnJheTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAg
IHRoaXNPYmplY3QtPmRlYWxsb2NhdGVTcGFyc2VNYXAoKTsKIH0KIAotaW5saW5lIHN0ZDo6cGFp
cjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1h
cDo6YWRkKEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpKQoraW5saW5lIFNwYXJzZUFycmF5VmFs
dWVNYXA6OkFkZFJlc3VsdCBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXks
IHVuc2lnbmVkIGkpCiB7CiAgICAgU3BhcnNlQXJyYXlFbnRyeSBlbnRyeTsKLSAgICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CisgICAgQWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CiAgICAgc2l6ZV90IGNhcGFjaXR5
ID0gbV9tYXAuY2FwYWNpdHkoKTsKICAgICBpZiAoY2FwYWNpdHkgIT0gbV9yZXBvcnRlZENhcGFj
aXR5KSB7CiAgICAgICAgIEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qo
KGNhcGFjaXR5IC0gbV9yZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2YodW5zaWduZWQpICsgc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKQEAgLTIwOSwxNCArMjA5LDE0IEBAIGlubGlu
ZSBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IFNwYXJzZUFy
cmF5VmFsdWVNYXA6OmFkZChKCiAKIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVl
TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VB
cnJheUVudHJ5JiBlbnRyeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCBy
ZXN1bHQgPSBhZGQoYXJyYXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAm
IGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0
aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJy
YXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5n
IHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCAm
JiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAgIHJlbW92ZShyZXN1bHQuZmlyc3Qp
OworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7
CisgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBpZiAoc2hvdWxkVGhy
b3cpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNTIsMTQgKzI1MiwxNCBA
QCBpbmxpbmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBK
U0FycmF5KiBhcnJheSwgdW5zaWduZWQgaQogCiBpbmxpbmUgYm9vbCBTcGFyc2VBcnJheVZhbHVl
TWFwOjpwdXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBzdGQ6OnBhaXI8U3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7
Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAg
ICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFyc2VBcnJheUVudHJ5
JiBlbnRyeSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8gc2F2ZSBhIHNl
cGFyYXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAu
CiAgICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5
LCBhbmQgdGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90IHRo
ZSByaWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCi0gICAgaWYgKHJl
c3VsdC5zZWNvbmQgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAgICByZW1vdmUo
cmVzdWx0LmZpcnN0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4
dGVuc2libGUoKSkgeworICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAg
cmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHBy
b3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgIH0KIApAQCAt
MzU1LDcgKzM1NSw3IEBAIHZvaWQgSlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBhbHdheXMgYmUgYSBuZXcg
ZW50cnkgaW4gdGhlIG1hcCwgc28gbm8gbmVlZCB0byBjaGVjayB3ZSBjYW4gd3JpdGUsCiAgICAg
ICAgIC8vIGFuZCBhdHRyaWJ1dGVzIGFyZSBkZWZhdWx0IHNvIG5vIG5lZWQgdG8gc2V0IHRoZW0u
CiAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkpLmZpcnN0
LT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIG1hcC0+
YWRkKHRoaXMsIGkpLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVl
KTsKICAgICB9CiAKICAgICB2b2lkKiBuZXdSYXdTdG9yYWdlID0gMDsKQEAgLTQzMCwxNSArNDMw
LDE1IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duTnVtZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaW5kZXgsIFByb3BlcnR5CiAgICAgQVNTRVJUKG1hcCk7CiAKICAgICAv
LyAxLiBMZXQgY3VycmVudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJv
cGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIHByb3BlcnR5IG5hbWUgUC4KLSAgICBz
dGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1h
cC0+YWRkKHRoaXMsIGluZGV4KTsKLSAgICBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwID0g
JnJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7CisgICAgU3BhcnNlQXJyYXlFbnRyeSog
ZW50cnlJbk1hcCA9ICZyZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIC8vIDIuIExldCBl
eHRlbnNpYmxlIGJlIHRoZSB2YWx1ZSBvZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJv
cGVydHkgb2YgTy4KICAgICAvLyAzLiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5z
aWJsZSBpcyBmYWxzZSwgdGhlbiBSZWplY3QuCiAgICAgLy8gNC4gSWYgY3VycmVudCBpcyB1bmRl
ZmluZWQgYW5kIGV4dGVuc2libGUgaXMgdHJ1ZSwgdGhlbgotICAgIGlmIChyZXN1bHQuc2Vjb25k
KSB7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGlmICghaXNFeHRlbnNp
YmxlKCkpIHsKLSAgICAgICAgICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgICAg
ICAgICBtYXAtPnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHJl
amVjdChleGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5
IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBhZDk4ZDY2MTkwYjAzY2E1NWM4
NGEwMjhjNDg5MzAyYjUxYjE4YjliLi44OTBmZGY0ZjBhMDk0NGU1ODRiNjZmMWY2NGUzNTgxM2M5
NzI0MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC01NSw2
ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBN
YXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIE1hcDo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgTWFwOjpBZGRSZXN1bHQgQWRkUmVz
dWx0OwogCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAoKQogICAgICAgICAgICAgOiBtX2Zs
YWdzKE5vcm1hbCkKQEAgLTg3LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8v
IFRoZXNlIG1ldGhvZHMgbWF5IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAogICAgICAg
ICB2b2lkIHB1dChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wg
c2hvdWxkVGhyb3cpOwogICAgICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU0FycmF5
KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBzdGQ6OnBh
aXI8aXRlcmF0b3IsIGJvb2w+IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOworICAgICAgICBBZGRS
ZXN1bHQgYWRkKEpTQXJyYXkqLCB1bnNpZ25lZCk7CiAgICAgICAgIGl0ZXJhdG9yIGZpbmQodW5z
aWduZWQgaSkgeyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQogICAgICAgICAvLyBUaGlzIHNob3Vs
ZCBBU1NFUlQgdGhlIHJlbW92ZSBpcyB2YWxpZCAoY2hlY2sgdGhlIHJlc3VsdCBvZiB0aGUgZmlu
ZCkuCiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yIGl0KSB7IG1fbWFwLnJlbW92ZShpdCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmNwcAppbmRleCA4ZWZiNDA2NWUxNzM5Y2YwNWQ1ZDkxNjZjNzViZWNkODBkZGUzMGZjLi45
YmFlOTQwOTc0MDA4NTJhY2EwYzAzZjRiNzllNDI1YmI0YzMzMzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlm
aWVyKQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAg
ICAgICAgICAgICAgbV9zZXQuYWRkKG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV0uaW1w
bCgpKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5zZWNv
bmQpCisgICAgICAgIGlmICghbV9zZXQuYWRkKGlkZW50aWZpZXIpLmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKaW5kZXggZTM0MDhiMDhiYjI2YWM5
NDhmNzdjNzVmMmEzODE0MTcwODY3ZDQ0MS4uMTI3ZDAyOGUwZjU0MmYyOWI5YTgwY2FhOGI3MTFm
MjY2YjQ5YTU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUmVjdXJzaW9uQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaApAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSlNWYWx1
ZSBTdHJpbmdSZWN1cnNpb25DaGVja2VyOjpwZXJmb3JtQ2hlY2soKQogICAgIGludCBzaXplID0g
bV9leGVjLT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5z
aXplKCk7CiAgICAgaWYgKHNpemUgPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggJiYgc2l6
ZSA+PSBtX2V4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCiAgICAgICAgIHJldHVy
biB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcigpOwotICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAh
bV9leGVjLT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5h
ZGQobV90aGlzT2JqZWN0KS5zZWNvbmQ7CisgICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4
ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZCht
X3RoaXNPYmplY3QpLmlzTmV3RW50cnk7CiAgICAgaWYgKGFscmVhZHlWaXNpdGVkKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gUmV0dXJuIGVtcHR5IHN0cmluZyB0byBhdm9pZCBp
bmZpbml0ZSByZWN1cnNpb24uCiAgICAgcmV0dXJuIEpTVmFsdWUoKTsgLy8gSW5kaWNhdGUgc3Vj
Y2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4
IDZlZTQxOWRhNmE3OGY4MTI2NmJlZTJkNmE0YWY1YzU2ZDllZDk3NTMuLjUyZWIxYzc0OGQzNDcw
NTUyMzAxY2FlNWUwMzIxNjQ5NDM3YTY3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgaW5saW5lIHZvaWQgU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHMKICAgICAvLyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4gc3RkOjpt
YWtlX3BhaXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBydmFsdWUgcmVmZXJlbmNlcy4KICAgICAvLyBX
aGVuIGVpdGhlciBvZiB0aGUgcGFyYW1ldGVycyBhcmUgYml0ZmllbGRzLCB0aGUgQysrIGNvbXBp
bGVyIHdpbGwgdHJ5IHRvIGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3aGljaCBpcyBpbnZhbGlkLiBU
byB3b3JrIGFyb3VuZCB0aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1ha2UgdGhlIHBhcmFtZXRlciBh
biBydmFsdWUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTI2MSBmb3IgbW9yZSBkZXRhaWxzCi0gICAgc3RkOjpwYWlyPFRyYW5zaXRpb25NYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFp
cihzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0lu
UHJldmlvdXMpLCBzdHJ1Y3R1cmUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgIFRy
YW5zaXRpb25NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1h
a2VfcGFpcihzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmli
dXRlc0luUHJldmlvdXMpLCBzdHJ1Y3R1cmUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgLy8gVGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSEgLSB3ZSBzaG91bGQgb25s
eSBoaXQgdGhpcyB3aGVuIGRlc3BlY2lmeWluZy4KLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJz
dC5nZXQoKS5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NF
UlQocmVzdWx0Lml0ZXJhdG9yLmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91
cyk7CiAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
KTsKLSAgICAgICAgbWFwKCktPnNldChyZXN1bHQuZmlyc3QsIHN0cnVjdHVyZSk7CisgICAgICAg
IG1hcCgpLT5zZXQocmVzdWx0Lml0ZXJhdG9yLCBzdHJ1Y3R1cmUpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCAxYmIzY2Q1YmIzZDli
ZTk2NzgzMTI5ZThlNWFlMjEzMGQyZThiZjc4Li5mMDFhMGM4MjZiMWM0N2Y3NzRiYTM3MWIzMzJj
NmFlM2Q3NGJjODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAu
aApAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJh
dG9yOwogICAgIH07CiAKKyAgICB0eXBlZGVmIFdURjo6SGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJh
dG9yPiBBZGRSZXN1bHQ7CisKICAgICBXZWFrR0NNYXAoKQogICAgIHsKICAgICB9CkBAIC0xMjEs
MTcgKzEyMywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAg
ICB9CiAKLSAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICBBZGRSZXN1
bHQgYWRkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRl
cm5hbFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0
ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7Ci0gICAgICAgIGlmIChpdGVy
LnNlY29uZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAg
ICAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5oZWFwLmhhbmRsZUhlYXAoKS0+
YWxsb2NhdGUoKTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7CisgICAg
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7CiAgICAgICAgICAgICBIYW5k
bGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBGaW5hbGl6ZXJDYWxs
YmFjazo6ZmluYWxpemVyQ29udGV4dEZvcihrZXkpKTsKICAgICAgICAgICAgIEhhbmRsZUhlYXA6
OmhlYXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CiAgICAgICAgICAgICAq
c2xvdCA9IHZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpdGVyOworICAgICAgICAv
LyBXZWFrR0NNYXAgZXhwb3NlcyBhIGRpZmZlcmVudCBpdGVyYXRvciwgc28gd2UgbmVlZCB0byB3
cmFwIGl0IGFuZCBjcmVhdGUgb3VyIG93biBBZGRSZXN1bHQuCisgICAgICAgIHJldHVybiBBZGRS
ZXN1bHQoaXRlcmF0b3IocmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAg
IH0KICAgICAKICAgICB2b2lkIHNldChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUgdmFsdWUp
CkBAIC0xNDQsMTIgKzE0NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgcGFpcjx0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRl
ciA9IG1fbWFwLmFkZChrZXksIDApOwotICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBpdGVyLmZp
cnN0LT5zZWNvbmQ7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAgICAgICB0eXBlbmFt
ZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAg
IEhhbmRsZVNsb3Qgc2xvdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmhlYXAu
aGFuZGxlSGVhcCgpLT5hbGxvY2F0ZSgpOwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZv
cihzbG90KS0+bWFrZVdlYWsoc2xvdCwgdGhpcywga2V5KTsKLSAgICAgICAgICAgIGl0ZXIuZmly
c3QtPnNlY29uZCA9IHNsb3Q7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IHNsb3Q7CiAgICAgICAgIH0KICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3Jp
dGVCYXJyaWVyKHNsb3QsIHZhbHVlKTsKICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAppbmRleCA2MGQ1OTkyOGE0
NjdhNjE3ZTJmM2E3ODFlYmUyMDA1MTVlMzZkOTAwLi45ZGUzOWFkOGEyOTg2MjJjNDMzYTY3ZWI2
NGE3MjIwNGRlMTllNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
UHJvZmlsZVRyZWVOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2Zp
bGVUcmVlTm9kZS5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2hp
bGRyZW4gPSBuZXcgTWFwKCk7CiAgICAgCiAgICAgICAgIFByb2ZpbGVUcmVlTm9kZSBuZXdFbnRy
eTsKLSAgICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NoaWxkcmVu
LT5hZGQoU3RyaW5nKG5hbWUpLCBuZXdFbnRyeSk7Ci0gICAgICAgIFByb2ZpbGVUcmVlTm9kZSog
Y2hpbGRJbk1hcCA9ICZyZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOworICAg
ICAgICBQcm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQ7CiAgICAgICAgICsrY2hpbGRJbk1hcC0+bV9jb3VudDsKICAgICAgICAgcmV0dXJuIGNoaWxk
SW5NYXA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQu
aCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggY2FmYjI2NDllYjYyNDcx
YWNjOTZmNGNmMzc4OWVjMDQ5ZDc0MDBlZS4uZDdkOWU0M2E5YTU1YTFmZGZhODgzZjc4OTdhMTA3
Nzk5YTVjZmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCkBAIC0zNiw2ICszNiw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAg
dHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwor
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0Owog
ICAgICAgICAKICAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQogICAgICAgICAKQEAgLTU3LDcg
KzU4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIEluY3JlYXNlcyB0aGUgY291bnQg
aWYgYW4gZXF1YWwgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHRoZSByZXR1
cm4gdmFsdWUgaXMgYSBwYWlyIG9mIGFuIGludGVyYXRvciB0byB0aGUgbmV3IHZhbHVlJ3MgCiAg
ICAgICAgIC8vIGxvY2F0aW9uLCBhbmQgYSBib29sIHRoYXQgaXMgdHJ1ZSBpZiBhbiBuZXcgZW50
cnkgd2FzIGFkZGVkLgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25z
dCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIFJlZHVjZXMgdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSwgYW5k
IHJlbW92ZXMgaXQgaWYgY291bnQKICAgICAgICAgLy8gZ29lcyBkb3duIHRvIHplcm8sIHJldHVy
bnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgcmVtb3ZlZC4KQEAgLTE0MiwxMCArMTQzLDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSBzdGQ6
OnBhaXI8dHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBW
YWx1ZVR5cGUgJnZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7IAotICAgICAgICArK3Jlc3VsdC5maXJzdC0+c2Vj
b25kOworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7Cisg
ICAgICAgICsrcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291
cmNlL1dURi93dGYvSGFzaE1hcC5oCmluZGV4IGJlN2U5ZWJlZDEzNzkzYmE3OGUwY2FmZDczOTA1
YjFlMDRjMzA1NzguLjI2YTlkOWM1Y2IxNThkM2E1ZmViNzJlYzVjYzg1MGE4ZTYwMTYzZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoTWFwLmgKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBW
YWx1ZVR5cGU+IGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKQEAgLTk0LDEyICs5
NSwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0IG5v
dCBrZXkgaWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUg
aXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAg
Ly8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkg
YWRkZWQKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBN
YXBwZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYs
IE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIC8vIGRvZXMgbm90aGluZyBpZiBrZXkgaXMg
YWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhl
IGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFu
IHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBw
YWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUp
OyAKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlw
ZSk7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICB2b2lk
IHJlbW92ZShpdGVyYXRvcik7CkBAIC0xMjIsMTIgKzEyMywxMiBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgLy8gICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJik7CiAgICAgICAgIC8v
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVmFsdWVUeXBlJiwgY29uc3QgVCYpOwogICAgICAg
ICAvLyAgIHN0YXRpYyB0cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhh
c2hDb2RlKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3I+IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlw
ZSk7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9y
PiBBZGRSZXN1bHQgYWRkKGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0lu
UmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlw
ZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwogCiAgICAgICAgIGNsYXNzIEhhc2hNYXBL
ZXlzUHJveHkgOiBwcml2YXRlIEhhc2hNYXAgewogICAgICAgICBwdWJsaWM6CkBAIC0zMTksMzQg
KzMyMCwzNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAg
IGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBi
b29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAg
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1h
cHBlZFBhc3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPFZhbHVlVHJhaXRzLCBIYXNoRnVu
Y3Rpb25zPiA+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBh
aXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAg
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBt
YXBwZWQpIAogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5s
aW5lQWRkKGtleSwgbWFwcGVkKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAg
ICAgIEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNh
bGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBz
ZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFw
cGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0
b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUWVBFLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBwYWlyPHR5cGVuYW1l
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OmFkZChjb25zdCBUWVBFJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgdmFsdWUpCiAgICAgewog
ICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFw
VHJhbnNsYXRvckFkYXB0ZXI8VmFsdWVUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPiA+KGtleSwgdmFs
dWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQo
Y29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IDMzY2IxNGRh
YWI2ODI2ODdmMGFlOGU2YzJjOGYxYjJiYWVmOGFiOTYuLjFiM2IyZTI4NzMzNDM5YjEwYmI3NTNj
OTA0ZDU0ZmZlYzU1ZjI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0
b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVU
eXBlPiBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVU
eXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7
CiAKQEAgLTc2LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJl
dHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBs
b2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBl
bnRyeSB3YXMgYWRkZWQuCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBW
YWx1ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAog
ICAgICAgICAvLyBBbiBhbHRlcm5hdGUgdmVyc2lvbiBvZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBv
YmplY3QgYnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCiAgICAgICAgIC8vIHdpdGggc29tZSBvdGhl
ciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVj
dCBpcyBhbHJlYWR5CkBAIC04Niw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAv
LyAgIHN0YXRpYyB0cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hD
b2RlKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXZlcnNlIHRoZSBvcmRlciBvZiB0
aGUgdGVtcGxhdGUgYXJndW1lbnRzIHNvIHRoYXQgY2FsbGVycwogICAgICAgICAvLyBjYW4ganVz
dCBwYXNzIHRoZSB0cmFuc2xhdG9yIGFuZCBsZXQgdGhlIGNvbXBpbGVyIGRlZHVjZSBULgotICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxp
dGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYpOwogCiAg
ICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92
ZShpdGVyYXRvcik7CkBAIC0xNzcsMTQgKzE3OCwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAg
IGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46Oml0ZXJhdG9yLCBib29sPiBI
YXNoU2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICBpbmxpbmUg
dHlwZW5hbWUgSGFzaFNldDxULCBVLCBWPjo6QWRkUmVzdWx0IEhhc2hTZXQ8VCwgVSwgVj46OmFk
ZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5h
ZGQodmFsdWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFz
aFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+CisgICAg
aW5saW5lIHR5cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFk
ZFJlc3VsdAogICAgIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChj
b25zdCBUJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRk
UGFzc2luZ0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4g
Pih2YWx1ZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAwNTcyMmQ5YzU1NmE3OTdiNDE4ODA3
MjBkN2NlMzAwNTdmYjVmNmI2Li45YmQ1NDgyZmFjZWI3MjA5NDRjZTRjNTMxMTc0NzQwYmU0M2Ji
NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtMjk2LDYgKzI5NiwxMiBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdHJh
bnNsYXRlKFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgY29uc3QgVCYgdmFsdWUpIHsgbG9jYXRpb24g
PSB2YWx1ZTsgfQogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+
IHN0cnVjdCBIYXNoVGFibGVBZGRSZXN1bHQgeworICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQo
SXRlcmF0b3JUeXBlIGl0ZXIsIGJvb2wgaXNOZXdFbnRyeSkgOiBpdGVyYXRvcihpdGVyKSwgaXNO
ZXdFbnRyeShpc05ld0VudHJ5KSB7IH0KKyAgICAgICAgSXRlcmF0b3JUeXBlIGl0ZXJhdG9yOwor
ICAgICAgICBib29sIGlzTmV3RW50cnk7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgY2xhc3Mg
SGFzaFRhYmxlIHsKICAgICBwdWJsaWM6CkBAIC0zMDUsNiArMzExLDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUg
VmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8SGFzaEZ1
bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKIAogICAgICAgICBIYXNoVGFibGUoKTsK
ICAgICAgICAgfkhhc2hUYWJsZSgpIApAQCAtMzMwLDEzICszMzcsMTMgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9
CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUp
IHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3Qo
dmFsdWUpLCB2YWx1ZSk7IH0KKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpl
eHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CiAKICAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24g
b2YgYWRkKCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwog
ICAgICAgICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlw
ZSBjb252ZXJzaW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUg
dGFibGUuCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBULCB0eXBlbmFtZSBFeHRyYT4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtl
eSwgY29uc3QgRXh0cmEmKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGRQ
YXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+
IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+
IEFkZFJlc3VsdCBhZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYp
OwogCiAgICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJldHVybiBm
aW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3RfaXRlcmF0
b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlU
cmFuc2xhdG9yVHlwZT4oa2V5KTsgfQpAQCAtNjY1LDcgKzY3Miw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25zdCBF
eHRyYSYgZXh0cmEpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6QWRkUmVzdWx0IEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6YWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQogICAgIHsKICAg
ICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKQEAgLTcwMCw3ICs3MDcsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0
b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50
cnkpLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzRGVs
ZXRlZEJ1Y2tldCgqZW50cnkpKQogICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBl
bnRyeTsKQEAgLTcxMSw3ICs3MTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZWRFbnRyeSA9IGVudHJ5OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9y
OjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSks
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25H
b29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAjaWYgRFVNUF9IQVNI
VEFCTEVfU1RBVFMKICAgICAgICAgICAgICsrcHJvYmVDb3VudDsKQEAgLTczOCwxOSArNzQ1LDE5
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgLy8gZm9sbG93IGEgcGl2b3QgZW50cnkg
YW5kIHJldHVybiB0aGUgbmV3IHBvc2l0aW9uLgogICAgICAgICAgICAgS2V5VHlwZSBlbnRlcmVk
S2V5ID0gRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAgICBleHBhbmQoKTsK
LSAgICAgICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2VfcGFpcihmaW5k
KGVudGVyZWRLZXkpLCB0cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVChwLmZpcnN0ICE9IGVuZCgp
KTsKLSAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICAgICAgQWRkUmVzdWx0IHJlc3VsdChm
aW5kKGVudGVyZWRLZXkpLCB0cnVlKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0
b3IgIT0gZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAg
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50
cnkpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0
b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBpbmxp
bmUgcGFpcjx0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFk
ZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKKyAgICBp
bmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNzaW5n
SGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAgICAg
ICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIApAQCAtNzY4LDcgKzc3NSw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICB1bnNpZ25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsK
ICAgICAgICAgCiAgICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAg
ICAgICAgaW5pdGlhbGl6ZUJ1Y2tldCgqZW50cnkpOwpAQCAtNzgzLDE0ICs3OTAsMTQgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAvLyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBhbmQgcmV0
dXJuIHRoZSBuZXcgcG9zaXRpb24uCiAgICAgICAgICAgICBLZXlUeXBlIGVudGVyZWRLZXkgPSBF
eHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KTsKICAgICAgICAgICAgIGV4cGFuZCgpOwotICAgICAg
ICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQoZW50ZXJl
ZEtleSksIHRydWUpOwotICAgICAgICAgICAgQVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgICAgICBBZGRSZXN1bHQgcmVzdWx0KGZpbmQoZW50
ZXJlZEtleSksIHRydWUpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvciAhPSBl
bmQoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CisgICAgICAgIHJl
dHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IDc5OTQ2NmZhOThjNmRmN2UyNWIy
MDY3YzJhMjAwZjQ3OTQ3M2FjMTIuLjIxZTM4ZDgzYWI0NzA2NzgxYzM3YjE1MWYxZGNlMTEyMjQ5
MzJjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291
cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaApAQCAtODEsNiArODEsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVl
VHlwZSwgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVl
VHlwZSwgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+OwogCisgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7CisKICAgICAgICAgTGlzdEhhc2hTZXQo
KTsKICAgICAgICAgTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICAgICAgTGlz
dEhhc2hTZXQmIG9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYpOwpAQCAtMTI0LDEwICsxMjYs
MTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiBh
ZGQgaXMgYSBwYWlyIG9mIGFuIGl0ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlvbiwg
CiAgICAgICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMg
YWRkZWQuCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUm
KTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAotICAgICAgICBw
YWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVW
YWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IGluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJik7CisgICAg
ICAgIEFkZFJlc3VsdCBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbnNlcnRCZWZv
cmUoaXRlcmF0b3IsIGNvbnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNv
bnN0IFZhbHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CkBAIC02OTUs
MjYgKzY5NywyNSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBl
bmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZh
bHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRk
UmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVl
VHlwZSAmdmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4o
dmFsdWUsIG1fYWxsb2NhdG9yLmdldCgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0g
ICAgICAgICAgICBhcHBlbmROb2RlKCpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsK
KyAgICAgICAgdHlwZW5hbWUgSW1wbFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVt
cGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAg
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhcHBlbmROb2RlKCpyZXN1
bHQuaXRlcmF0b3IpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVz
dWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWly
PHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJv
b2w+IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJh
dG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGlu
ZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUm
IG5ld1ZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjx0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5l
d1ZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQot
ICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuZmlyc3QpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3Qp
LCByZXN1bHQuc2Vjb25kKTsKLQorICAgICAgICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBt
X2FsbG9jYXRvci5nZXQoKSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgICAgIGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVzdWx0Lml0ZXJhdG9yKTsKKyAg
ICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJl
c3VsdC5pc05ld0VudHJ5KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9y
ZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGlu
ZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUs
IGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gaW5zZXJ0
QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUpLCBuZXdWYWx1ZSk7IAogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhh
c2hNYXAuaAppbmRleCBmNDhhNTljZjYzNzAyMjY0MDQyNTIwM2M4ZTQyZDE2YmVkOGI1MTczLi4w
YWYzNmJlNjAyN2ZiNTAwYmJmZWE1YzIxZGM2ZTA4Y2RmMDE5ZjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFz
aE1hcC5oCkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFs
dWVUeXBlPiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
QWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAK
ICAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKIApAQCAtODYsMTQgKzg3LDE0IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtleSBpZiBrZXkg
aXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2Yg
dGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29s
ZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAg
ICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5
cGUpOyAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KFJhd0tleVR5cGUsIE1hcHBl
ZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwgTWFw
cGVkUGFzc0luVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBzZXQoUmF3S2V5VHlwZSwgTWFwcGVk
UGFzc0luVHlwZSk7CiAKICAgICAgICAgLy8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5
IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0
b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdz
IHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAotICAg
ICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlw
ZSk7IAorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5U
eXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBl
KTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQg
cmVtb3ZlKFJhd0tleVR5cGUpOwpAQCAtMTA0LDggKzEwNSw4IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKFJhd0tleVR5cGUpOyAvLyBlZmZpY2llbnQg
Y29tYmluYXRpb24gb2YgZ2V0IHdpdGggcmVtb3ZlCiAKICAgICBwcml2YXRlOgotICAgICAgICBw
YWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJ
blJlZmVyZW5jZVR5cGUpOwotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQo
UmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3Vs
dCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwor
ICAgICAgICBBZGRSZXN1bHQgaW5saW5lQWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblJlZmVy
ZW5jZVR5cGUpOwogCiAgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0x
OTUsNTIgKzE5Niw1MiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+
LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcs
IFg+OjppbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VU
eXBlIG1hcHBlZCkgCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxU
cmFuc2xhdG9yPihrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBp
bmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJh
dG9yLCBib29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwg
VywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aW5s
aW5lQWRkKFJhd0tleVR5cGUga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkg
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xhdG9yPihr
ZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1l
IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlw
ZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNo
TWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBl
ZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNl
Y29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVk
KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhl
IGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7
IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFp
dHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAgTWFw
cGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0g
ICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9y
LCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRk
UmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoUmF3S2V5VHlw
ZSBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAg
ICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2gg
dGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAg
ICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAg
ICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywg
WD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBW
LCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojph
ZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46
Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBX
LCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQo
UmF3S2V5VHlwZSBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TcGVjdHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCA1OWJjNGEyOWE5
ZDhkNzc1MWIyZGQxZDAzMWI4NTIzYzY1YjYzNDdkLi41ZTdhNDg0Y2Q4NzY2YmNhZjIyY2E0Yzkz
ZGRjZTk3MGRkMmJhMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEp
CiAgICAgewotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGNvdW50KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAg
ICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gY291bnQ7CisgICAgICAgIHR5cGVuYW1lIEhhc2hN
YXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBj
b3VudCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCArPSBjb3VudDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQg
bG9uZyBnZXQoY29uc3QgVCYga2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
V1RGVGhyZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAppbmRl
eCBlYzVkZTcyMjAwZjU3NWQ3NzRjYzIwZDkxYTkzOGU5ZDlkOWYwMjY5Li4zYTkwM2Y4OTVlMGY5
NjVmNDY0ZmVjZjhiMDljYmE5MzcyNDBiZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApA
QCAtNjMsMTAgKzYzLDEwIEBAIElkZW50aWZpZXJUYWJsZTo6fklkZW50aWZpZXJUYWJsZSgpCiAg
ICAgICAgICgqaXRlciktPnNldElzSWRlbnRpZmllcihmYWxzZSk7CiB9CiAKLXN0ZDo6cGFpcjxI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRk
KFN0cmluZ0ltcGwqIHZhbHVlKQorSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBJZGVu
dGlmaWVyVGFibGU6OmFkZChTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFz
aFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZCh2
YWx1ZSk7Ci0gICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAg
SGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1
ZSk7CisgICAgKCpyZXN1bHQuaXRlcmF0b3IpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFk
RGF0YS5oIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCmluZGV4IGIwMmQxMGQ3Yzgx
OTFhN2E1ZmU3YjVlN2E3MjQ0MmY1NjhmZDQ2N2QuLmRiYzViYTZhYzU0Zjg1OGE3MjQ4YjczY2Mw
OTY5NzY5ZjA5YTNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKQEAgLTQ2LDkgKzQ2LDkgQEAg
Y2xhc3MgSWRlbnRpZmllclRhYmxlIHsKIHB1YmxpYzoKICAgICB+SWRlbnRpZmllclRhYmxlKCk7
CiAKLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBh
ZGQoU3RyaW5nSW1wbCogdmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1
bHQgYWRkKFN0cmluZ0ltcGwqIHZhbHVlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPgotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJv
b2w+IGFkZChVIHZhbHVlKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFk
ZChVIHZhbHVlKTsKIAogICAgIGJvb2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGQ3NzVlN2JiOTRmZmUwNjM2ZGYzM2Jh
MmRlM2VkNWMzNWM5ZjkxZGMuLjY2YmQ3ODUxYTAwNTJkYzRlMTk2YzFiYjQwYTVkM2E4MTM5NWU2
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTc4LDExICs3OCwxMSBA
QCBzdGF0aWMgaW5saW5lIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQog
ewotICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1
bHQgPSBzdHJpbmdUYWJsZSgpLmFkZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOworICAgIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nVGFibGUoKS5h
ZGQ8VCwgSGFzaFRyYW5zbGF0b3I+KHZhbHVlKTsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMg
bmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBi
b29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFk
ZFJlc3VsdC5zZWNvbmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQu
Zmlyc3Q7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJl
c3VsdC5pdGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCiBzdHJ1Y3QgQ1N0cmlu
Z1RyYW5zbGF0b3IgewpAQCAtMzAwLDcgKzMwMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
QXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIGlmICghci0+bGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgU3RyaW5n
SW1wbCogcmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRkKHIpLmZpcnN0OworICAgIFN0cmluZ0lt
cGwqIHJlc3VsdCA9ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAgICBpZiAocmVz
dWx0ID09IHIpCiAgICAgICAgIHItPnNldElzQXRvbWljKHRydWUpOwogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTU4Yzk4ZDdmZjg3NDAz
OGU1MTdiNjBkMTk3M2M3MjhkY2ZhYjc5Li44MzdiOGZiZDIyMDVhZGM5NzQ4NmRkM2YwZThmMDIw
NzM4MGY4ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgQ29vcmRpbmF0aW9uSW5mb01hcDo6aXRlcmF0b3Ig
Y29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmZpbmQoZGJJ
ZGVudGlmaWVyKTsKICAgICBpZiAoY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID09IG1fY29vcmRp
bmF0aW9uSW5mb01hcC5lbmQoKSkgewogICAgICAgICAvLyBObyBwZW5kaW5nIHRyYW5zYWN0aW9u
cyBmb3IgdGhpcyBEQgotICAgICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3Jk
aW5hdGlvbkluZm9NYXAuYWRkKGRiSWRlbnRpZmllciwgQ29vcmRpbmF0aW9uSW5mbygpKS5maXJz
dDsKKyAgICAgICAgY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZv
TWFwLmFkZChkYklkZW50aWZpZXIsIENvb3JkaW5hdGlvbkluZm8oKSkuaXRlcmF0b3I7CiAgICAg
fQogCiAgICAgQ29vcmRpbmF0aW9uSW5mbyYgaW5mbyA9IGNvb3JkaW5hdGlvbkluZm9JdGVyYXRv
ci0+c2Vjb25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCmluZGV4IDJhMDk2Mjc5OGJiZWYzMjU0
ZDAxNzU4Mzg1NzFiZTNiNDEyNzE2NjcuLjEwYjA4YTJiNzIzY2RhMjkyMGQ0M2RlZmExOGMzMTE1
ZWZhMWIyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
Y2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBRdW90YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZGF0YWJhc2VTaXplKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhKG1fZGF0YUd1YXJk
KTsKLSAgICBIYXNoTWFwPFN0cmluZywgU2l6ZU1hcD46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFz
ZVNpemVzLmFkZChvcmlnaW5JZGVudGlmaWVyLCBTaXplTWFwKCkpLmZpcnN0OworICAgIEhhc2hN
YXA8U3RyaW5nLCBTaXplTWFwPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlU2l6ZXMuYWRkKG9y
aWdpbklkZW50aWZpZXIsIFNpemVNYXAoKSkuaXRlcmF0b3I7CiAgICAgaXQtPnNlY29uZC5zZXQo
ZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCmluZGV4IDJjMGU5NDgzNmYzYzY0
NzIyMjJhYjY3MmQ0MzM3NzdmM2UxYTYwNzcuLjIxNmI5NDVjNDliOTExZTNmNDVlZmU1YTdlNGMx
MzI5NmYzMGViMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9i
amVjdEhhc2hUYWJsZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9i
amVjdEhhc2hUYWJsZU1hcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFz
aE1hcDxjb25zdCBKU0M6Okhhc2hUYWJsZSosIEpTQzo6SGFzaFRhYmxlPjo6aXRlcmF0b3IgaXRl
ciA9IG1fbWFwLmZpbmQoc3RhdGljVGFibGUpOwogICAgICAgICBpZiAoaXRlciAhPSBtX21hcC5l
bmQoKSkKICAgICAgICAgICAgIHJldHVybiAmaXRlci0+c2Vjb25kOwotICAgICAgICByZXR1cm4g
Jm1fbWFwLnNldChzdGF0aWNUYWJsZSwgSlNDOjpIYXNoVGFibGUoKnN0YXRpY1RhYmxlKSkuZmly
c3QtPnNlY29uZDsKKyAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpTQzo6
SGFzaFRhYmxlKCpzdGF0aWNUYWJsZSkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXgg
MDA1MGE3MzE1N2ZkZmNiNWRlMDc2MWYzMjVmNmZkMTVhYzAwMDc2ZC4uYzExZjYwMTAzOGE2NjAw
NjliYWE1ZDk5MjZjYzI1ZDJiZWQwNDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgU3RydWN0dXJlKiBjYWNoZURP
TVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHUKIHsKICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVj
dC0+c3RydWN0dXJlcygpOwogICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0lu
Zm8pKTsKLSAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUpKS5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChj
bGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9
CiAKIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCmluZGV4IDc5YTNkYWZkMGU2NGJhNWQ4YjBlYjU3ZThlODFlOTJjZWM4NGMzZDMu
LjQ4N2Y4ZTM1YTRjNjllYmU1YzQ0YTJkNDY5NTI5OGU0ZGRjYjMxY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBQ
YXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgaWYgKHNldElubGluZUNhY2hlZFdyYXBw
ZXIod29ybGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIEpTQzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPiBwYXNzV2Vhaygqd29ybGQtPmdsb2JhbERh
dGEoKSwgd3JhcHBlciwgd3JhcHBlck93bmVyKHdvcmxkLCBkb21PYmplY3QpLCB3cmFwcGVyQ29u
dGV4dCh3b3JsZCwgZG9tT2JqZWN0KSk7Ci0gICAgICAgIHBhaXI8RE9NT2JqZWN0V3JhcHBlck1h
cDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHdvcmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmpl
Y3QsIHBhc3NXZWFrKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNv
bmQpOworICAgICAgICBET01PYmplY3RXcmFwcGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gd29y
bGQtPm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWspOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5k
ZXggYWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMC4uNzRmMzViMGI3OTJj
MWMwNjAzN2QxYWRlZjNiMjMxMzY1OGE5MmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rv
ckNsYXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRh
aW5zKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFz
czo6c19pbmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNs
YXNzOjpzX2luZm8sIHRlbXApLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGM4ZjE2ZjVhOTYxNjViZThlMTNkYjJiZWI1ZWFiMTYw
ODM3ZTkyMGMuLmJkZWU0Njg3ZDZjMDQyMTE2M2VlODljM2IwMTBjNmE0YjhlN2RlZWEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcApAQCAtODIsMTEgKzgyLDExIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRM
aXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnCiAgICAgQVNT
RVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOwogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7
CiAKLSAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
X3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsKKyAgICBQYWdl
TGlzdGVuZXJzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmFkZChw
YWdlLCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OwogCi0gICAgTGlzdGVuZXJTZXQqIGxpc3Rl
bmVycyA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMg
PSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7
CiAKICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBmNDk1Y2VkYzg2Mzlm
MGZmM2FjOTdjYzM2M2M2MzdhYzQxY2QzMjUwLi4xMGRlZDcwMDcwNzk0MDIzZGM3ZWQyMTI5OWZj
ZmIyNDg2MTIxN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZl
cjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVh
CiAgICAgICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAg
ICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0g
bV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9p
bnRNYXAoKSkuZmlyc3Q7CisgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0
KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcmF0b3I7CiAgICAgaWYg
KGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSkpCiAg
ICAgICAgIHJldHVybiAiIjsKICAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50Lmxp
bmVOdW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2ZjBhODE0ODc0
MTM3ZjUyNWJjNDk1MzZlMzE0MmZhMTg4MjJlZGUuLjdhYzE1NWNjZTZjYzJhNGRkOWFiN2JhYzc3
ZDE1MDk0OGVhZmMwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHJpdmF0ZToK
ICAgICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAgICB7CiAg
ICAgICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCi0gICAgICAg
IHBhaXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRk
KG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CisgICAgICAgIE9iamVjdFBvb2w6OkFkZFJl
c3VsdCBhZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNp
emUoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMK
LSAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwotICAgICAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGl0ZXIuZmlyc3QtPnNlY29uZCkgPCBt
X29iamVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoaXRlci5m
aXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90Pihh
ZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAg
ICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzI2LDEwICs3
MjYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQogICAgIHsKICAgICAgICAgVVN0cmluZyBzdHIgPSBpZGVudC51c3RyaW5nKCk7Ci0gICAgICAg
IHBhaXI8U3RyaW5nQ29uc3RhbnRQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fY29uc3Rh
bnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBp
ZiAoIWl0ZXIuc2Vjb25kKSB7CisgICAgICAgIFN0cmluZ0NvbnN0YW50UG9vbDo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fY29uc3RhbnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9v
bC5zaXplKCkpOworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
ICAgICB3cml0ZShTdHJpbmdQb29sVGFnKTsKLSAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgo
aXRlci5maXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoYWRkUmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggNmZkZjM3MzQy
ZTAzMGNkNmVlZGE1ZjcxMGFiOTJlYTkxOTNhNDBkMC4uNWMzMzU5Mzc3MDVlZjIzYzg2ZDY2NzBi
YjFjYjkzODdhZjM2ODEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
TlBWOE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVj
dChOUFAgbnBwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgRE9NV2luZAogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaXRlciA9IHN0YXRpY1Y4
TlBPYmplY3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFzaCwgVjhOUE9iamVjdFZlY3RvcigpKS5maXJz
dDsgCisgICAgICAgIGl0ZXIgPSBzdGF0aWNWOE5QT2JqZWN0TWFwKCktPnNldCh2OE9iamVjdEhh
c2gsIFY4TlBPYmplY3RWZWN0b3IoKSkuaXRlcmF0b3I7CiAgICAgfQogCiAgICAgVjhOUE9iamVj
dCogdjhucE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KF9OUE5fQ3JlYXRl
T2JqZWN0KG5wcCwgJlY4TlBPYmplY3RDbGFzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50
aWZpZXJSZXAuY3BwCmluZGV4IGZlZDQ3Y2E1ZWVlODY2NjAxNjI0NThlM2UxMDRmNDYxMmYxZGY4
ZmYuLjJhY2YxNDE1M2QxZGI5ZTEyYjcyNTU4YTUzODhkOTg2ZmY4YTVlODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBJZGVudGlm
aWVyUmVwKiBJZGVudGlmaWVyUmVwOjpnZXQoaW50IGludElEKQogICAgICAgICByZXR1cm4gaWRl
bnRpZmllcjsKICAgICB9CiAgICAgCi0gICAgcGFpcjxJbnRJZGVudGlmaWVyTWFwOjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gaW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7IAotICAg
IGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNv
bmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGlu
dElEKTsKKyAgICBJbnRJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gaW50SWRlbnRp
Zmllck1hcCgpLmFkZChpbnRJRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKICAgICAgICAgCi0g
ICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAg
ICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICB9CiAg
ICAgCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBs
PiwgSWRlbnRpZmllclJlcCo+IFN0cmluZ0lkZW50aWZpZXJNYXA7CkBAIC05MywxNSArOTMsMTUg
QEAgSWRlbnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGNvbnN0IGNoYXIqIG5hbWUpCiAg
ICAgICAgIHJldHVybiAwOwogICAKICAgICBVU3RyaW5nIHN0cmluZyA9IHN0cmluZ1RvVVN0cmlu
ZyhTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSkp
OwotICAgIHBhaXI8U3RyaW5nSWRlbnRpZmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IHN0cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7Ci0gICAgaWYgKHJl
c3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0g
ICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7Cisg
ICAgU3RyaW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZp
ZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KSB7CisgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKG5hbWUpOwogICAgICAg
ICAKLSAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7Cisg
ICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBib29sIElkZW50aWZpZXJSZXA6OmlzVmFsaWQo
SWRlbnRpZmllclJlcCogaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCmluZGV4IDJjYmU5MjNmNWQwMGEyMTJiYTY5MDRhYmJiNjQxMWY5NWUzMDU0MzEuLjgzOTg2
YWY1ODNjNTkwNDJmMWJmNzc3NTEyMDdhODAzNTNhZDEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hN
YXA8Um9vdE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5m
aW5kKHJvb3RPYmplY3QpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkgewogICAg
ICAgICAgICAgcm9vdE9iamVjdC0+YWRkSW52YWxpZGF0aW9uQ2FsbGJhY2soJm1faW52YWxpZGF0
aW9uQ2FsbGJhY2spOwotICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFkZChyb290T2JqZWN0LCBK
U1RvTlBPYmplY3RNYXAoKSkuZmlyc3Q7CisgICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJv
b3RPYmplY3QsIEpTVG9OUE9iamVjdE1hcCgpKS5pdGVyYXRvcjsKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgPT0gaXRlci0+c2Vjb25kLmVu
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggYjk4OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4u
NTIxOTA5N2NlNGRmZDY5Y2NkOGZiYTQ3Mjk5OTI4MGNkY2RkN2RjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyNDcs
NyArMTI0Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1
ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwcm9wCiBzdGF0aWMgdm9pZCBsb2dVbmlt
cGxlbWVudGVkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJRCkKIHsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEhhc2hTZXQ8aW50PiwgcHJvcGVydHlJRFNldCwgKCkpOwotICAgIGlmICghcHJvcGVy
dHlJRFNldC5hZGQocHJvcGVydHlJRCkuc2Vjb25kKQorICAgIGlmICghcHJvcGVydHlJRFNldC5h
ZGQocHJvcGVydHlJRCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HX0VS
Uk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAn
JXMnLiIsIGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0
eUlEKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTM2
NzM1YWZiNmIxNzM0NzE3MDg2N2U3NDg0MTdkN2UzZDY3MmU0Yi4uZGQ5MDRkMzdmYjk1NGU0NGRi
YTY1Mzg3NjczNTgzMTE5OGZhZDNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNl
U291cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAg
ICB1bnNpZ25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgp
ICsgMSkgPDwgNiB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSA8PCA0CiAgICAgICAg
ICAgICAgICAgICAgICAgIHwgKGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSA9PSBU
ZXh0T3JpZW50YXRpb25VcHJpZ2h0ID8gOCA6IDApIHwgKGZvbnREZXNjcmlwdGlvbi5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsID8gNCA6IDApIHwgKHN5bnRoZXRpY0JvbGQgPyAyIDogMCkgfCAo
c3ludGhldGljSXRhbGljID8gMSA6IDApOwogCi0gICAgU2ltcGxlRm9udERhdGEqJiBjYWNoZWRE
YXRhID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAg
IFNpbXBsZUZvbnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtl
eSwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoY2FjaGVkRGF0YSkKICAgICAgICAgcmV0
dXJuIGNhY2hlZERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5k
ZXggNmQyMmZkY2NkMGQ1NzlkMDhjNGE2NWMyZTZlNWZmYmJiNWEyNGZhNS4uZTAwMmYyZjhmMDE3
MGU5OGNhNTZkNzFmZTVjZGI5N2JiZWE2MmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRk
Rm9udEZhY2VSdWxlKGNvbnN0IENTU0ZvbnRGYWNlUnVsZSogZm9udEZhY2VSdWxlKQogICAgICAg
ICBpZiAoZmFtaWx5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFj
ZXMgPSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4gPiYgZmFtaWx5Rm9u
dEZhY2VzID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgICAgIGlmICghZmFtaWx5Rm9udEZhY2VzKSB7CiAgICAgICAgICAgICBmYW1p
bHlGb250RmFjZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPik7
CiAKQEAgLTQ4NywxMyArNDg3LDEzIEBAIEZvbnREYXRhKiBDU1NGb250U2VsZWN0b3I6OmdldEZv
bnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiAgICAgICAg
IHJldHVybiBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0
aW9uLCBmYW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaE1hcDx1bnNpZ25lZCwg
UmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUg
PSBtX2ZvbnRzLmFkZChmYW1pbHksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRy
PEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPiA+JiBzZWdt
ZW50ZWRGb250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFtaWx5LCBudWxscHRyKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2VDYWNoZSkKICAgICAgICAgc2Vn
bWVudGVkRm9udEZhY2VDYWNoZSA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQ
dHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRz
TWFzayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAKLSAgICBSZWZQdHI8Q1NTU2Vn
bWVudGVkRm9udEZhY2U+JiBmYWNlID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0
c01hc2ssIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNl
PiYgZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVy
YXRvci0+c2Vjb25kOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0gQ1NTU2VnbWVu
dGVkRm9udEZhY2U6OmNyZWF0ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5jcHAKaW5kZXggZjQ2MmMyNGM0ZDY1NzU2NWIzNmUwMzI5ZWY1YWU0N2Q4
YzNjZjY4MC4uYmIwMGQwMjIwZGViYzcxMjBkMzJkMzcwNzFjYTZlZjMzMmU2MDY1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIEZvbnREYXRhKiBDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpCiAgICAgRm9udFRyYWl0c01hc2sgZGVzaXJlZFRy
YWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogICAgIHVuc2lnbmVkIGhh
c2hLZXkgPSAoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgKEZv
bnRUcmFpdHNNYXNrV2lkdGggKyAxKSkgfCAoKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsID8gMSA6IDApIDw8IEZvbnRUcmFpdHNNYXNrV2lkdGgpIHwgZGVzaXJlZFRy
YWl0c01hc2s7CiAKLSAgICBTZWdtZW50ZWRGb250RGF0YSomIGZvbnREYXRhID0gbV9mb250RGF0
YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNlZ21lbnRlZEZvbnRE
YXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXksIDApLml0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAgICByZXR1cm4gZm9udERhdGE7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKaW5kZXggMzFh
ODdhZjBjM2IzNGY4ZTY2Zjc0OGZhMTE2ZmRiMTdlNDU0N2QzMS4uMDQxZDZjODI0NTIzZDJmMjli
NTYyZmIxYzI0NGY1MjQwYzA2YzE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTEwMDQsNyArMTAwNCw3IEBAIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBDb3VudGVyRGlyZWN0aXZlTWFwOjppdGVyYXRvciBJdGVyYXRvcjsKICAgICAgICAg
SXRlcmF0b3IgZW5kID0gcGFyZW50TWFwLmVuZCgpOwogICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0
ID0gcGFyZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ291
bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRp
cmVjdGl2ZXMoKSkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVz
JiBkaXJlY3RpdmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0
ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0
KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gaXQtPnNlY29uZC5tX3Jl
c2V0OwogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZhbHVlID0gaXQtPnNlY29u
ZC5tX3Jlc2V0VmFsdWU7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIGludCB2
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpLT5n
ZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMg
PSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZlcygpKS5maXJzdC0+
c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAu
YWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgewogICAgICAg
ICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IHRydWU7CiAgICAgICAgICAgICAgICAgZGly
ZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCAxOTYxZDUyNjY5NTYyM2FjYTZjMTc0N2E1MzQ0YTllMmIwZjNjOGRm
Li4wNWNhNTY2NzIxYTc2NTlkOTgzZWU2MDlkYzQwNjZlOThiNDUxZDVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC00OTYsMTAgKzQ5NiwxMCBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3
LCBjb25zdCBWZWN0b3I8UgogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgICAgIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlID0gZGV0ZXJtaW5lU2NvcGUoY3NzU2hlZXQpOwogICAgICAg
ICBpZiAoc2NvcGUpIHsKLSAgICAgICAgICAgIHBhaXI8U2NvcGVkUnVsZVNldE1hcDo6aXRlcmF0
b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmFkZChzY29wZSwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgICAg
ICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0KCkpOwotICAg
ICAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQtPmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1No
ZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKKyAgICAgICAgICAgIFNjb3BlZFJ1bGVTZXRN
YXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX3Njb3BlZEF1dGhvclN0eWxlcy5hZGQoc2NvcGUs
IG51bGxwdHIpOworICAgICAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRvcHRQdHIobmV3IFJ1bGVT
ZXQoKSk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+YWRkUnVsZXNG
cm9tU2hlZXQoY3NzU2hlZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMjM3Myw3ICsyMzczLDcgQEAgdm9pZCBS
dWxlU2V0OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYg
bWFwLCBjb25zdCBSdWxlRGEKIHsKICAgICBpZiAoIWtleSkKICAgICAgICAgcmV0dXJuOwotICAg
IE93blB0cjxWZWN0b3I8UnVsZURhdGE+ID4mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIp
LmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFZlY3RvcjxSdWxlRGF0YT4gPiYgcnVsZXMgPSBt
YXAuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXJ1bGVzKQog
ICAgICAgICBydWxlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UnVsZURhdGE+KTsKICAgICBydWxl
cy0+YXBwZW5kKHJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKaW5kZXgg
YzQ2YzcwNDdjNTAwZTRiMjgzZjNkN2VjNTg0YmQ5YjhlOTM0NmVlYS4uMDViYTU0OTUwMmFmYjg3
Njc3ZjI1MzEyYmYxM2FiNjQ5NzY5YTQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5j
cHAKQEAgLTU1LDEwICs1NSwxMCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NW
YWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQgaWRlbnQpCiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7CiAKICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGR1bW15VmFsdWU7Ci0gICAgcGFpcjxJZGVudGlmaWVyVmFs
dWVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9pZGVudGlmaWVyVmFsdWVDYWNoZS5h
ZGQoaWRlbnQsIGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVu
dHJ5LmZpcnN0LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihp
ZGVudCk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSWRlbnRpZmllclZh
bHVlQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IG1faWRlbnRpZmllclZhbHVlQ2FjaGUuYWRkKGlk
ZW50LCBkdW1teVZhbHVlKTsKKyAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50
cnkuaXRlcmF0b3ItPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KGlkZW50KTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVu
c2lnbmVkIHJnYlZhbHVlKQpAQCAtNzgsMTAgKzc4LDEwIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1
ZSkKICAgICAgICAgbV9jb2xvclZhbHVlQ2FjaGUuY2xlYXIoKTsKIAogICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPENvbG9yVmFsdWVDYWNoZTo6aXRl
cmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1t
eVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vj
b25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKLSAgICByZXR1
cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBDb2xvclZhbHVlQ2FjaGU6OkFkZFJlc3VsdCBl
bnRyeSA9IG1fY29sb3JWYWx1ZUNhY2hlLmFkZChyZ2JWYWx1ZSwgZHVtbXlWYWx1ZSk7CisgICAg
aWYgKGVudHJ5LmlzTmV3RW50cnkpCisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOworICAgIHJldHVybiBlbnRy
eS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBD
U1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcyB0eXBlKQpAQCAtMTE3LDE1ICsxMTcsMTUgQEAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1By
aW1pdGkKICAgICB9CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGR1bW15VmFsdWU7
Ci0gICAgcGFpcjxJbnRlZ2VyVmFsdWVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gY2Fj
aGUtPmFkZChpbnRWYWx1ZSwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAg
ICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFs
dWUsIHR5cGUpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgIEludGVnZXJW
YWx1ZUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBjYWNoZS0+YWRkKGludFZhbHVlLCBkdW1teVZh
bHVlKTsKKyAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3It
PnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5cGUpOworICAgIHJl
dHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcm
IGZhbWlseU5hbWUpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBt
X2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFkZChmYW1pbHlOYW1lLCAwKS5maXJzdC0+c2Vjb25kOwor
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVD
YWNoZS5hZGQoZmFtaWx5TmFtZSwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICB2YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZmFtaWx5TmFtZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogICAgIHJldHVybiB2YWx1ZTsKQEAgLTEz
OCw3ICsxMzgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVQb29sOjpjcmVh
dGVGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgcwogICAgIGlmIChtX2ZvbnRGYWNl
VmFsdWVDYWNoZS5zaXplKCkgPiBtYXhpbXVtRm9udEZhY2VDYWNoZVNpemUpCiAgICAgICAgIG1f
Zm9udEZhY2VWYWx1ZUNhY2hlLmNsZWFyKCk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiYg
dmFsdWUgPSBtX2ZvbnRGYWNlVmFsdWVDYWNoZS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25k
OworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hl
LmFkZChzdHJpbmcsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgdmFsdWUgPSBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShzdHJpbmcsIGNvbnRleHRT
dHlsZVNoZWV0KTsKICAgICByZXR1cm4gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tl
ZFJhZGlvQnV0dG9ucy5jcHAKaW5kZXggNDcwZGEyYWQ1YzczYjE3OTJhZTYyM2Q5NDgyNjhiOGQ2
NTVlNmM1OC4uZTY3MjMyOWFmOGRlMzc4YmVmZGZjMTRmOGFjYmQwZjJlYzBjNzQwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0b24oSFRNTElucHV0RWxlbWVu
dCogYnV0dG9uKQogdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjphZGQoSFRNTElucHV0RWxlbWVudCog
YnV0dG9uKQogewogICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9CdXR0b24oKSk7Ci0gICAgaWYg
KCFtX21lbWJlcnMuYWRkKGJ1dHRvbikuc2Vjb25kKQorICAgIGlmICghbV9tZW1iZXJzLmFkZChi
dXR0b24pLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKICAgICBib29sIGdyb3VwV2FzVmFs
aWQgPSBpc1ZhbGlkKCk7CiAgICAgaWYgKGJ1dHRvbi0+cmVxdWlyZWQoKSkKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1dHRvbihIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50KQogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKICAgICAgICAgbV9uYW1l
VG9Hcm91cE1hcCA9IGFkb3B0UHRyKG5ldyBOYW1lVG9Hcm91cE1hcCk7CiAKLSAgICBPd25QdHI8
UmFkaW9CdXR0b25Hcm91cD4mIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQt
Pm5hbWUoKS5pbXBsKCksIFBhc3NPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4oKSkuZmlyc3QtPnNl
Y29uZDsKKyAgICBPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4mIGdyb3VwID0gbV9uYW1lVG9Hcm91
cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5pbXBsKCksIFBhc3NPd25QdHI8UmFkaW9CdXR0b25H
cm91cD4oKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWdyb3VwKQogICAgICAgICBncm91
cCA9IFJhZGlvQnV0dG9uR3JvdXA6OmNyZWF0ZSgpOwogICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKaW5kZXgg
Y2JhYWE0ZWZlYzAxN2IzNjIyYjY4NDk0Y2RlNGYxOTMxY2NhYmQ4Zi4uYzVjYjNhZDlmNmVhYjc4
ZDg5ZTVkNjdlYTljNDM1MjMyMjk3ZTA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgQ2hpbGRMaXN0
TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OndpbGxSZW1vdmVDaGls
ZChOb2RlKiB0CiAKIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVs
YXRpb25Sb3V0ZXI6OmluY3JlbWVudFNjb3BpbmdMZXZlbChOb2RlKiB0YXJnZXQpCiB7Ci0gICAg
cGFpcjxTY29waW5nTGV2ZWxNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3Njb3BpbmdM
ZXZlbHMuYWRkKHRhcmdldCwgMSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAg
ICsrKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBTY29waW5nTGV2ZWxNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX3Njb3BpbmdMZXZlbHMuYWRkKHRhcmdldCwgMSk7CisgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgeworICAgICAgICArKyhyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk2Zjlj
Yzk5ZmM2MWJmYTY2OGRiMzQ1NmE2NWI2ZGJkNzk4ZDMyOGMuLjQ1MmZmZjk4MTBlMGZkMDAzYTQz
ZDU4NzliODJjMDQ0OWVmZDMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDUyMSw3
ICs0NTIxLDcgQEAgSFRNTEFsbENvbGxlY3Rpb24qIERvY3VtZW50OjphbGwoKQogCiBIVE1MQ29s
bGVjdGlvbiogRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKQogewotICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+JiBjb2xsZWN0aW9uID0gbV93
aW5kb3dOYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpLmZpcnN0
LT5zZWNvbmQ7CisgICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBt
X3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cikuaXRl
cmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWNvbGxlY3Rpb24pCiAgICAgICAgIGNvbGxlY3Rpb24g
PSBIVE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBXaW5kb3dOYW1lZEl0ZW1zLCBuYW1l
KTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQoKTsKQEAgLTQ1MjksNyArNDUyOSw3IEBAIEhU
TUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCiAKIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1z
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0
aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFt
ZS5pbXBsKCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhUTUxOYW1lQ29s
bGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRk
KG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghY29sbGVj
dGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKHRo
aXMsIERvY3VtZW50TmFtZWRJdGVtcywgbmFtZSk7CiAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0
KCk7CkBAIC00OTIyLDcgKzQ5MjIsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBEb2N1bWVu
dDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0CiAKIEhUTUxD
YW52YXNFbGVtZW50KiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudChjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgZWxlbWVudCA9IG1fY3Nz
Q2FudmFzRWxlbWVudHMuYWRkKG5hbWUsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPEhU
TUxDYW52YXNFbGVtZW50PiYgZWxlbWVudCA9IG1fY3NzQ2FudmFzRWxlbWVudHMuYWRkKG5hbWUs
IDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICBlbGVtZW50
ID0gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZSh0aGlzKTsKICAgICByZXR1cm4gZWxlbWVudC5n
ZXQoKTsKQEAgLTU3MjUsMTIgKzU3MjUsMTIgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1l
bnQ6OmdldEl0ZW1zKGNvbnN0IFN0cmluZyYgdHlwZU5hbWVzKQogICAgIC8vIEluIHRoaXMgY2Fz
ZSB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiB1bmlxdWUgc3RyaW5nIGlkZW50aWZpZXIgdG8gbWFwIHN1
Y2ggcmVxdWVzdCBpbiB0aGUgY2FjaGUuCiAgICAgU3RyaW5nIGxvY2FsVHlwZU5hbWVzID0gdHlw
ZU5hbWVzLmlzTnVsbCgpID8gU3RyaW5nKCJodHRwOi8vd2Via2l0Lm9yZy9taWNyb2RhdGEvdW5k
ZWZpbmVkSXRlbVR5cGUiKSA6IHR5cGVOYW1lczsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURh
dGE6Ok1pY3JvRGF0YUl0ZW1MaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBub2Rl
TGlzdHMtPm1fbWljcm9EYXRhSXRlbUxpc3RDYWNoZS5hZGQobG9jYWxUeXBlTmFtZXMsIDApOwot
ICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6TWljcm9E
YXRhSXRlbUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG5vZGVMaXN0cy0+bV9taWNyb0Rh
dGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7CisgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxNaWNyb0RhdGFJdGVtTGlzdD4gbGlzdCA9
IE1pY3JvRGF0YUl0ZW1MaXN0OjpjcmVhdGUodGhpcywgdHlwZU5hbWVzKTsKLSAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
PSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCA1Yjg5OWIzZjU3OGEyNzQzOTgy
NDg1OThiOWQyOWFkOTg4ZjAwMzZlLi41NDk0MDgyNTI4YjI5MzM1ZTBjNTM3N2U3MGIzNGQ3NGQ1
NTIyNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAt
NzcsNyArNzcsNyBAQCBib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQo
ZXZlbnQtPnRhcmdldCgpKTsKLSAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRk
KGV2ZW50KS5zZWNvbmQ7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChl
dmVudCkuaXNOZXdFbnRyeTsKICAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7
IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCiAgICAgCiAg
ICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKQpAQCAtMTAwLDcgKzEwMCw3
IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50
KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCh0YXJnZXQuZ2V0KCkpLnNl
Y29uZCkKKyAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCh0YXJnZXQu
Z2V0KCkpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNjcm9sbEV2ZW50LT5z
ZXRUYXJnZXQodGFyZ2V0KTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIERvY3VtZW50RXZlbnRR
dWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpCiAKICAgICAvLyBJbnNlcnQgYSBtYXJrZXIg
Zm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgogICAgIEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuY29u
dGFpbnMoMCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoMCkuc2Vj
b25kOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoMCkuaXNOZXdFbnRy
eTsKICAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBu
b3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCiAKICAgICBSZWZQdHI8RG9jdW1lbnRF
dmVudFF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9y
ZGVyZWRNYXAuY3BwCmluZGV4IGJjYjIzYjQ5NjJmNjQ2NmJiNjFiOGFlYmFmYTQwNWZlZTg4ZTkz
MDMuLjA4MmFhMDc0MGE3MWNjZGY1MGUxZDQyZDIzZDMxN2U2M2FmMmY0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC02OSwxNCArNjksMTQgQEAgdm9p
ZCBEb2N1bWVudE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgaWYgKCFtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CiAg
ICAgICAgIC8vIEZhc3QgcGF0aC4gVGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxpY2F0
ZUNvdW50cywgc28gd2UgYXNzdW1lIHRoYXQgaXQncwogICAgICAgICAvLyBhbHNvIG5vdCBhbHJl
YWR5IGluIG1fbWFwIGFuZCB0cnkgdG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywgd2Un
cmUgZG9uZS4KLSAgICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBt
X21hcC5hZGQoa2V5LCBlbGVtZW50KTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCisg
ICAgICAgIE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGVsZW1lbnQp
OworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgLy8gVGhlIGFkZCBmYWlsZWQsIHNvIHRoaXMga2V5IHdhcyBhbHJlYWR5IGNh
Y2hlZCBpbiBtX21hcC4KICAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdp
dGggdGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKICAgICAgICAgLy8gY2FjaGUgZm9yIHRoaXMg
a2V5IHNvIGdldCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNhbGxlZC4KLSAgICAg
ICAgbV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7CisgICAgICAgIG1fbWFwLnJlbW92ZShh
ZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0
aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuY3BwCmluZGV4IDc3NGU2NjU3NGE2YmNjMWRlY2ZhOTY2OTYzZGJhOTYwYWE5OWM0NDku
LmMxZmQ0ZDdjOTU3YTY0YmZmNzg4ZjkwMWU2MWRlMDFjYTA5MjI3N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTEzNCwxMSArMTM0LDExIEBAIGJvb2wgRXZl
bnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuCiAgICAgfQogCiAgICAgaWYgKG1faGFzaE1hcCkgewotICAgICAgICBw
YWlyPEV2ZW50TGlzdGVuZXJIYXNoTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9oYXNo
TWFwLT5hZGQoZXZlbnRUeXBlLCBudWxscHRyKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQp
Ci0gICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBFdmVudExp
c3RlbmVyVmVjdG9yKTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lckhhc2hNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX2hhc2hNYXAtPmFkZChldmVudFR5cGUsIG51bGxwdHIpOworICAgICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGFkb3B0UHRyKG5ldyBFdmVudExpc3RlbmVyVmVjdG9yKTsKIAotICAgICAgICByZXR1cm4gYWRk
TGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVz
ZUNhcHR1cmUpOworICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAg
IGlmICghbV9zaW5nbGVFdmVudExpc3RlbmVyVmVjdG9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
NDgwZTViYjdmNGViZjcwOTAxZWUxMjhkMDdjODU3MDUwZDg0MDQ3NC4uMzM2ZTFiZjdhYjI0ZjNk
NDg4MGJhMTU3NmRmZGYyMzdlYmNhMjE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTg1LDkgKzE4
NSw5IEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogCiAgICAgICAgICAgICAgICAgLy8g
VGFnIHN0YXRzCiAgICAgICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBz
aXplX3Q+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gcGVyVGFnQ291bnQuYWRkKGVsZW1lbnQt
PnRhZ05hbWUoKSwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCsrOworICAgICAgICAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+OjpBZGRSZXN1bHQgcmVzdWx0ID0gcGVyVGFnQ291bnQu
YWRkKGVsZW1lbnQtPnRhZ05hbWUoKSwgMSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQr
KzsKIAogICAgICAgICAgICAgICAgIGlmIChFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRl
RGF0YSA9IGVsZW1lbnQtPmF0dHJpYnV0ZURhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVzICs9IGF0dHJpYnV0ZURhdGEtPmxlbmd0aCgpOwpAQCAtMTYxMiwxMiArMTYxMiwx
MiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIAogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWVB
dG9tID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2Fj
aGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2Rl
TGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2Rl
TGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVEYXRhOjpUYWdO
b2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJl
Tm9kZUxpc3RzKHRoaXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGUuYWRkKGxvY2FsTmFtZUF0b20sIDAp
OworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PFRhZ05vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8VGFn
Tm9kZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIHN0YXJBdG9tLCBsb2Nh
bE5hbWVBdG9tKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsgICAKIH0KIApAQCAtMTYzNSwzNiArMTYzNSwzNiBAQCBQYXNzUmVmUHRyPE5vZGVM
aXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVQogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0b20gPSBuYW1lOwogCi0gICAg
cGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZU5TOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGVOUzo6QWRk
UmVzdWx0IHJlc3VsdAogICAgICAgICA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0
cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlTlMuYWRkKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZUF0b20sIG5hbWVzcGFjZVVSSSkuaW1wbCgpLCAwKTsKLSAgICBpZiAoIXJlc3Vs
dC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQu
Zmlyc3QtPnNlY29uZCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0
dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAog
ICAgIFJlZlB0cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywg
bmFtZXNwYWNlVVJJLmlzRW1wdHkoKSA/IG51bGxBdG9tIDogbmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWVBdG9tKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeU5hbWUo
Y29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSkKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRh
OjpOYW1lTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxl
bWVudE5hbWUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBOb2RlTGlzdHNO
b2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1cmVSYXJl
RGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbmFtZU5vZGVMaXN0Q2FjaGUuYWRkKGVs
ZW1lbnROYW1lLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAg
UmVmUHRyPE5hbWVOb2RlTGlzdD4gbGlzdCA9IE5hbWVOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIGVs
ZW1lbnROYW1lKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeUNs
YXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpCiB7Ci0gICAgcGFpcjxOb2RlTGlzdHNO
b2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0CisgICAg
Tm9kZUxpc3RzTm9kZURhdGE6OkNsYXNzTm9kZUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdAog
ICAgICAgICA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9jbGFz
c05vZGVMaXN0Q2FjaGUuYWRkKGNsYXNzTmFtZXMsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vj
b25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPENs
YXNzTm9kZUxpc3Q+IGxpc3QgPSBDbGFzc05vZGVMaXN0OjpjcmVhdGUodGhpcywgY2xhc3NOYW1l
cyk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7
CiB9CiAKQEAgLTI1OTEsOSArMjU5MSw5IEBAIHZvaWQgTm9kZTo6Y29sbGVjdE1hdGNoaW5nT2Jz
ZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwKICAgICAg
ICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbiA9IHJlZ2lz
dHJ5LT5hdChpKS5nZXQoKTsKICAgICAgICAgICAgIGlmIChyZWdpc3RyYXRpb24tPnNob3VsZFJl
Y2VpdmVNdXRhdGlvbkZyb20odGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSkpIHsKICAgICAgICAg
ICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlvbnMgPSBy
ZWdpc3RyYXRpb24tPmRlbGl2ZXJ5T3B0aW9ucygpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFz
aE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlv
bnM+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24t
Pm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCB8PSBk
ZWxpdmVyeU9wdGlvbnM7CisgICAgICAgICAgICAgICAgSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+OjpBZGRSZXN1bHQgcmVzdWx0
ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0aW9u
cyk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwogCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MDQsOSArMjYwNCw5IEBAIHZvaWQgTm9kZTo6
Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKiwKICAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qIHJl
Z2lzdHJhdGlvbiA9ICppdGVyOwogICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxk
UmVjZWl2ZU11dGF0aW9uRnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAg
ICAgICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucyA9
IHJlZ2lzdHJhdGlvbi0+ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAgICAgICAgICAgICAgcGFpcjxI
YXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0
aW9ucz46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlv
bi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9
IGRlbGl2ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1
bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRp
b25zKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5jcHAKaW5kZXggYTc0MjYyOTVlZjA2NGViZTljMGZhZGVmMGY2NzAxZDUxNjU4ZGEzZS4uZTA4
NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmNwcApAQCAtNTYsOSArNTYsOSBAQCB2b2lkIFF1YWxpZmllZE5hbWU6Omlu
aXQoY29uc3QgQXRvbWljU3RyaW5nJiBwLCBjb25zdCBBdG9taWNTdHJpbmcmIGwsIGNvbnN0IEF0
bwogICAgIGlmICghZ05hbWVDYWNoZSkKICAgICAgICAgZ05hbWVDYWNoZSA9IG5ldyBRTmFtZVNl
dDsKICAgICBRdWFsaWZpZWROYW1lQ29tcG9uZW50cyBjb21wb25lbnRzID0geyBwLmltcGwoKSwg
bC5pbXBsKCksIG4uaXNFbXB0eSgpID8gbnVsbEF0b20uaW1wbCgpIDogbi5pbXBsKCkgfTsKLSAg
ICBwYWlyPFFOYW1lU2V0OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZ05hbWVDYWNoZS0+
YWRkPFF1YWxpZmllZE5hbWVDb21wb25lbnRzLCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yPihj
b21wb25lbnRzKTsKLSAgICBtX2ltcGwgPSAqYWRkUmVzdWx0LmZpcnN0OyAgICAKLSAgICBpZiAo
IWFkZFJlc3VsdC5zZWNvbmQpCisgICAgUU5hbWVTZXQ6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBn
TmFtZUNhY2hlLT5hZGQ8UXVhbGlmaWVkTmFtZUNvbXBvbmVudHMsIFFOYW1lQ29tcG9uZW50c1Ry
YW5zbGF0b3I+KGNvbXBvbmVudHMpOworICAgIG1faW1wbCA9ICphZGRSZXN1bHQuaXRlcmF0b3I7
CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgbV9pbXBsLT5yZWYoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCmluZGV4IDAzNWM0YTIx
YTcyYzljZDg0MGUwYjI5NjJjZTY5NzZhZDg1NmJjYmUuLjljY2U3ZDk1YjVlMTA0NDNjMDNlZGE1
YjcyZjExMmM1NzA1MmU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5j
cHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6flNwYWNlU3BsaXRT
dHJpbmdEYXRhKCkKIAogUGFzc1JlZlB0cjxTcGFjZVNwbGl0U3RyaW5nRGF0YT4gU3BhY2VTcGxp
dFN0cmluZ0RhdGE6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKIHsKLSAgICBT
cGFjZVNwbGl0U3RyaW5nRGF0YSomIGRhdGEgPSBzaGFyZWREYXRhTWFwKCkuYWRkKHN0cmluZywg
MCkuZmlyc3QtPnNlY29uZDsKKyAgICBTcGFjZVNwbGl0U3RyaW5nRGF0YSomIGRhdGEgPSBzaGFy
ZWREYXRhTWFwKCkuYWRkKHN0cmluZywgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWRh
dGEpIHsKICAgICAgICAgZGF0YSA9IG5ldyBTcGFjZVNwbGl0U3RyaW5nRGF0YShzdHJpbmcpOwog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKaW5kZXggNTc2MWY1MDZlOTAxMDkxNzM2NDZjMWM5MzdjNTEwNzYzYjFhYzI2My4uMjI4
YWE4NmUzNWFhNjMxMzg4MDhmOTBlY2M5NjljMjZkYWNjNDAxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6
dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogCiAgICAgUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGU6
Oml0ZXJhdG9yIGNhY2hlSXRlcmF0b3I7CiAgICAgaWYgKGNhY2hlSGFzaCkgewotICAgICAgICBj
YWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5hZGQoY2FjaGVIYXNo
LCBudWxscHRyKS5maXJzdDsKKyAgICAgICAgY2FjaGVJdGVyYXRvciA9IHByZXNlbnRhdGlvbkF0
dHJpYnV0ZUNhY2hlKCkuYWRkKGNhY2hlSGFzaCwgbnVsbHB0cikuaXRlcmF0b3I7CiAgICAgICAg
IGlmIChjYWNoZUl0ZXJhdG9yLT5zZWNvbmQgJiYgY2FjaGVJdGVyYXRvci0+c2Vjb25kLT5rZXkg
IT0gY2FjaGVLZXkpCiAgICAgICAgICAgICBjYWNoZUhhc2ggPSAwOwogICAgIH0gZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCBkMTFmZWUxMjE4MTVjN2NmYzdj
OTlkMDFjZTU0NTU4N2JlM2NiMWI2Li5jM2E3MTUzY2FlNDVhZDYwMWE4NWM4NTA5OWUzZjE1MTg5
OTcyN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMzU5LDcg
KzM1OSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdzKGNvbnN0
IFN0cmluZyYgbmFtZSkKIAogdm9pZCBIVE1MQ29sbGVjdGlvbjo6YXBwZW5kKE5vZGVDYWNoZU1h
cCYgbWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAg
ICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCks
IG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFZlY3RvcjxFbGVtZW50Kj4gPiYg
dmVjdG9yID0gbWFwLmFkZChrZXkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwog
ICAgIGlmICghdmVjdG9yKQogICAgICAgICB2ZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPEVs
ZW1lbnQqPik7CiAgICAgdmVjdG9yLT5hcHBlbmQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDI1ZGNhMzNjZTcwNDg4ZGI1YTgz
Y2Q5ZjkzZWQ1Y2QxZmE4YTlkNjcuLmQ3ZmNiOWFhYzA4ZTg4NTM2ODZjZmRkYjUxZmExZTEwZDI5
OTQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
CkBAIC0yMzMsMTIgKzIzMywxMiBAQCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9y
PE93blB0cjxEaWdlc3Q+ID4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdAogICAgIERpZmZU
YWJsZSBvbGRUYWJsZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3TGlzdC5zaXpl
KCk7ICsraSkgewotICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9yIGl0ID0gbmV3VGFibGUuYWRk
KG5ld0xpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNpemVfdD4oKSkuZmlyc3Q7CisgICAgICAgIERp
ZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBuZXdUYWJsZS5hZGQobmV3TGlzdFtpXS0+bV9zaGExLCBW
ZWN0b3I8c2l6ZV90PigpKS5pdGVyYXRvcjsKICAgICAgICAgaXQtPnNlY29uZC5hcHBlbmQoaSk7
CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvbGRMaXN0LnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBvbGRUYWJsZS5hZGQob2xkTGlz
dFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgRGlmZlRhYmxl
OjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ldLT5tX3NoYTEsIFZlY3Rvcjxz
aXplX3Q+KCkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmlu
ZGV4IGRjYTgxY2FjYWM2YjM4N2RlZWE2ZjkzOTdjMGFjZWUyNDJmNjA2NjkuLjA2NGI4NjJjOTBi
NzU1ZTlmODNiMmEwZjdjYTgxZTQxZjE1NDE4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTgxLDEyICsxODEsMTIgQEAgaW5saW5l
IHZvaWQgU2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcihib29sIG1hdGNoZWQpCiAgICAg
ZG91YmxlIG1hdGNoVGltZU1zID0gV1RGOjpjdXJyZW50VGltZU1TKCkgLSBtX2N1cnJlbnRNYXRj
aERhdGEuc3RhcnRUaW1lOwogICAgIG1fdG90YWxNYXRjaGluZ1RpbWVNcyArPSBtYXRjaFRpbWVN
czsKIAotICAgIHBhaXI8UnVsZU1hdGNoaW5nU3RhdHNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmFkZChtYWtlS2V5KCksIFJ1bGVNYXRjaGluZ1N0YXRz
KG1fY3VycmVudE1hdGNoRGF0YSwgbWF0Y2hUaW1lTXMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOwot
ICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC50
b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLmhp
dHMgKz0gMTsKKyAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMobV9jdXJy
ZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7CisgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC50
b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
LmhpdHMgKz0gMTsKICAgICAgICAgaWYgKG1hdGNoZWQpCi0gICAgICAgICAgICByZXN1bHQuZmly
c3QtPnNlY29uZC5tYXRjaGVzICs9IDE7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZC5tYXRjaGVzICs9IDE7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBiMzUyYmQ4YTcxNWUxZTE5MTJjODkwY2Vm
ZGM4YjQwNjRkZTI3ZjQ0Li4wZWNmZDA5NzM5ODAzYTljZTUxODZlNDBlMzc0MGUyMGMzODcyZWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
QEAgLTg4MSw3ICs4ODEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNo
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbQogICAgIH0KIAogICAg
ICpzZWFyY2hJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOwotICAg
IFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIHJlc3VsdHNJdCA9IG1fc2VhcmNoUmVzdWx0cy5hZGQo
KnNlYXJjaElkLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4oKSkuZmlyc3Q7CisgICAgU2VhcmNoUmVz
dWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2VhcmNoSWQs
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5pdGVyYXRvcjsKIAogICAgIGZvciAoTGlzdEhhc2hT
ZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IHJlc3VsdENvbGxlY3Rvci5iZWdpbigpOyBpdCAhPSBy
ZXN1bHRDb2xsZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIHJlc3VsdHNJdC0+c2Vjb25kLmFw
cGVuZCgqaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGYyYWFiNGI3ZjRmNTcxZWNmZWRkOTMyOGEwNDc4MTU5MGQ3
YWNiYTkuLjkyNGJlMzg0MjlmNzQwOTYyM2IyNjc3OTJiYWQwNDU2MzNkYzg4ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTMzMyw3ICszMzMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVhawogCiAgICAgQnJlYWtw
b2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNNYXA6Oml0ZXJhdG9yIGRlYnVnU2VydmVy
QnJlYWtwb2ludElkc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElkcy5maW5kKGJyZWFrcG9pbnRJZCk7CiAgICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2lu
dElkc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMu
ZW5kKCkpCi0gICAgICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID0gbV9icmVh
a3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5zZXQoYnJlYWtwb2ludElkLCBWZWN0
b3I8U3RyaW5nPigpKS5maXJzdDsKKyAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRl
cmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVh
a3BvaW50SWQsIFZlY3RvcjxTdHJpbmc+KCkpLml0ZXJhdG9yOwogICAgIGRlYnVnU2VydmVyQnJl
YWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmQuYXBwZW5kKGRlYnVnU2VydmVyQnJlYWtwb2ludElk
KTsKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlv
biA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggYjNmNjE3MTkzYmY0NDliMmU2
M2U5ZjMyYjVhNzMwZGI2MGQ4MjQyNi4uYzkxYWQ4MmU2NWJkYzBmMWY5ZmUxNzc0NjMwNWM5YTNk
ZmViOWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApA
QCAtMjgyLDIxICsyODIsMjEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRTdHJp
bmcoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogaW5saW5lIHZvaWQg
SW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgaWYgKG1f
ZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2
YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKIGlu
bGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7
Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBpZiAobV9kYXRh
LnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5hcHBlbmQobmFt
ZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0QXJyYXkoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKIHsKICAgICBBU1NF
UlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVlKS5zZWNvbmQpCisgICAg
aWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkpCiAgICAgICAgIG1fb3JkZXIu
YXBwZW5kKG5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IGU2MjI5YzQ0ZDU0NjAwY2Y1
NGE2Y2I1NGNhMzZiYTM4MjFlZGUyMDYuLjRlNDI5MzhiYjVkNTdkNjEyYmRmMzUwY2YxOTM0MDQw
MjQyNzlhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMDYyLDEwICsxMDYyLDEwIEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgdW5zaWdu
ZWQgdHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBwYWlyPEVudHJ5TWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQodXJsLCB0eXBl
KTsKKyAgICBFbnRyeU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGVuZGluZ0VudHJpZXMuYWRk
KHVybCwgdHlwZSk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZCB8PSB0eXBlOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kIHw9IHR5cGU7CiB9CiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjphc3NvY2lhdGVEb2N1bWVudExvYWRlcldpdGhDYWNoZShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCmluZGV4IDE2YTdjY2YyZDM1ZjY0ZWQ0YjBlNTczMjEwYTM2NzU4MzU3NDRkZjEuLjVkMTAz
YjJmZjdiNGNiYTU0ZTAzN2JhNmM4Nzk2MjMwNGQwNWVlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cApAQCAtMTM0LDExICsxMzQsMTEgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKIHsKICAgICBB
U1NFUlQoIW1hbmlmZXN0VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKIAotICAgIHN0ZDo6
cGFpcjxDYWNoZUdyb3VwTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9jYWNoZXNJbk1l
bW9yeS5hZGQobWFuaWZlc3RVUkwsIDApOworICAgIENhY2hlR3JvdXBNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX2NhY2hlc0luTWVtb3J5LmFkZChtYW5pZmVzdFVSTCwgMCk7CiAgICAgCi0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuZmlyc3QtPnNlY29u
ZCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7
CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAKICAgICAv
LyBMb29rIHVwIHRoZSBncm91cCBpbiB0aGUgZGF0YWJhc2UKQEAgLTE1MCw3ICsxNTAsNyBAQCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVh
dGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogICAgICAgICBtX2NhY2hlSG9zdFNldC5hZGQodXJsSG9z
dEhhc2gobWFuaWZlc3RVUkwpKTsKICAgICB9CiAgICAgCi0gICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgPSBncm91cDsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGdyb3VwOwogICAgIAog
ICAgIHJldHVybiBncm91cDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCBhNzFlODUxNTQ2ZmMyMGFiODdjYTc3MjA1NTYxNzRmYzY2NjJlZTdjLi4yOTM2NGNkNDEzZmFk
Zjk0OWRjZTUwZDU2MmQ5YzM5ODg0YTM3ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0zNTE2LDcgKzM1MTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICAvLyBFbnN1
cmUgdGhpcyB0YXJnZXQncyB0b3VjaCBsaXN0IGV4aXN0cywgZXZlbiBpZiBpdCBlbmRzIHVwIGVt
cHR5LCBzbyBpdCBjYW4gYWx3YXlzIGJlIHBhc3NlZCB0byBUb3VjaEV2ZW50OjpDcmVhdGUgYmVs
b3cuCiAgICAgICAgIFRhcmdldFRvdWNoZXNNYXA6Oml0ZXJhdG9yIHRhcmdldFRvdWNoZXNJdGVy
YXRvciA9IHRvdWNoZXNCeVRhcmdldC5maW5kKHRvdWNoVGFyZ2V0LmdldCgpKTsKICAgICAgICAg
aWYgKHRhcmdldFRvdWNoZXNJdGVyYXRvciA9PSB0b3VjaGVzQnlUYXJnZXQuZW5kKCkpCi0gICAg
ICAgICAgICB0YXJnZXRUb3VjaGVzSXRlcmF0b3IgPSB0b3VjaGVzQnlUYXJnZXQuc2V0KHRvdWNo
VGFyZ2V0LmdldCgpLCBUb3VjaExpc3Q6OmNyZWF0ZSgpKS5maXJzdDsKKyAgICAgICAgICAgIHRh
cmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5zZXQodG91Y2hUYXJnZXQuZ2V0
KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLml0ZXJhdG9yOwogCiAgICAgICAgIC8vIHRvdWNoZXMg
YW5kIHRhcmdldFRvdWNoZXMgc2hvdWxkIG9ubHkgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0
b3VjaGVzIHN0aWxsIG9uIHRoZSBzY3JlZW4sIHNvIGlmIHRoaXMgcG9pbnQgaXMKICAgICAgICAg
Ly8gcmVsZWFzZWQgb3IgY2FuY2VsbGVkIGl0IHdpbGwgb25seSBhcHBlYXIgaW4gdGhlIGNoYW5n
ZWRUb3VjaGVzIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggNzMxZTFmYzA3
OWI1ZmU5ZmIzOTAwZmI1N2JmMzZlMWQ5NjZhOGZiMi4uZjkzOWM5YmZkMmEzNzYxOWY2NTc3YmY3
ZDI1ZmRmMTcyYjNhMDczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtOTAsMTUg
KzkwLDE1IEBAIFBhZ2VHcm91cCogUGFnZUdyb3VwOjpwYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBn
cm91cE5hbWUpCiAgICAgaWYgKCFwYWdlR3JvdXBzKQogICAgICAgICBwYWdlR3JvdXBzID0gbmV3
IFBhZ2VHcm91cE1hcDsKIAotICAgIHBhaXI8UGFnZUdyb3VwTWFwOjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gcGFnZUdyb3Vwcy0+YWRkKGdyb3VwTmFtZSwgMCk7CisgICAgUGFnZUdyb3VwTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gcGFnZUdyb3Vwcy0+YWRkKGdyb3VwTmFtZSwgMCk7CiAKLSAg
ICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vj
b25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgUGFnZUdyb3VwKGdyb3Vw
TmFtZSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVCghcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IG5ldyBQYWdlR3JvdXAoZ3JvdXBOYW1lKTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0LmZp
cnN0LT5zZWNvbmQpOwotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBBU1NF
UlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OmNsb3NlTG9jYWxTdG9yYWdlKCkKQEAgLTE5
Nyw3ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKExpbmtI
YXNoIGhhc2gpCiB7CiAgICAgQVNTRVJUKHNob3VsZFRyYWNrVmlzaXRlZExpbmtzKTsKICNpZiAh
UExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKCFtX3Zpc2l0ZWRMaW5rSGFzaGVzLmFkZChoYXNo
KS5zZWNvbmQpCisgICAgaWYgKCFtX3Zpc2l0ZWRMaW5rSGFzaGVzLmFkZChoYXNoKS5pc05ld0Vu
dHJ5KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBQYWdlOjp2aXNpdGVkU3RhdGVDaGFu
Z2VkKHRoaXMsIGhhc2gpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRV
c2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjCiAgICAgT3duUHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBhZG9wdFB0cihuZXcgVXNl
clNjcmlwdChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIGluamVjdGlvblRpbWUs
IGluamVjdGVkRnJhbWVzKSk7CiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAgICAgICBtX3Vz
ZXJTY3JpcHRzID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRNYXApOwotICAgIE93blB0cjxVc2Vy
U2NyaXB0VmVjdG9yPiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLT5hZGQod29ybGQs
IG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFVzZXJTY3JpcHRWZWN0b3I+JiBz
Y3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlcmF0
b3ItPnNlY29uZDsKICAgICBpZiAoIXNjcmlwdHNJbldvcmxkKQogICAgICAgICBzY3JpcHRzSW5X
b3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU2NyaXB0VmVjdG9yKTsKICAgICBzY3JpcHRzSW5Xb3Js
ZC0+YXBwZW5kKHVzZXJTY3JpcHQucmVsZWFzZSgpKTsKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lk
IFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29y
bGQsIGNvbnN0IFN0cmluZyYgcwogICAgIE93blB0cjxVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxl
U2hlZXQgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hlZXQoc291cmNlLCB1cmwsIHdoaXRlbGlz
dCwgYmxhY2tsaXN0LCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpKTsKICAgICBpZiAoIW1fdXNlclN0
eWxlU2hlZXRzKQogICAgICAgICBtX3VzZXJTdHlsZVNoZWV0cyA9IGFkb3B0UHRyKG5ldyBVc2Vy
U3R5bGVTaGVldE1hcCk7Ci0gICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYgc3R5bGVT
aGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuZmly
c3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNoZWV0
c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghc3R5bGVTaGVldHNJbldvcmxkKQogICAgICAgICBzdHlsZVNo
ZWV0c0luV29ybGQgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hlZXRWZWN0b3IpOwogICAgIHN0
eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKHVzZXJTdHlsZVNoZWV0LnJlbGVhc2UoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDkzMWYyNjAzZmQ0ZjIyMWI0YjVk
ZTNhY2RjMzdkOTc2ZDEzZGYyMjcuLmMyYTVhYjExNDM1ZWY2ZGIwNTc2OGM3NmNhMDM1N2I1NjI1
ODMzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xMzEsMTEg
KzEzMSwxMSBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFp
cjxPcmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NN
YXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkK
LSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgT3JpZ2luQWNjZXNz
V2hpdGVMaXN0KTsKKyAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmln
aW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRvcHRQdHIo
bmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CiAKLSAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Qq
IGxpc3QgPSByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBPcmlnaW5BY2Nlc3NXaGl0
ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICBsaXN0LT5h
cHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25E
b21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6OkFs
bG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IGRkMDU0NjE4
ZDBmODBhODAyNjI2ODVkOGIwZjRhOTk3YmIxM2I1MzguLmRhNjNhZmE2NGRjYzUxMmI0NTdiMWEw
YzU2YTk5MmE2N2RhNDljZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hB
ZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHAKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5v
ZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAg
ICAgICAgIHJlc3BvbmRpbmdOb2RlID0gdmlzaXRlZE5vZGU7CiAgICAgICAgICAgICAgICAgLy8g
Q29udGludWUgdGhlIGl0ZXJhdGlvbiB0byBjb2xsZWN0IHRoZSBhbmNlc3RvcnMgb2YgdGhlIHJl
c3BvbmRlciwgd2hpY2ggd2Ugd2lsbCBuZWVkIGxhdGVyLgogICAgICAgICAgICAgICAgIGZvciAo
dmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyB2aXNpdGVkTm9k
ZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhaXI8SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yLCBib29sPiBhZGRS
ZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3BvbmRlcnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgICAgICAgICAgICAgICAg
ICBIYXNoU2V0PE5vZGUqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9u
ZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKaW5kZXggNGI4MjNiMTJiNzhiNjVk
Y2M3NWJjMTExNzYyNjgxNDA2NmYyODVmOS4uNGJjN2MyZTYwN2VhYjNlMGI0NzM2MGE2MjI2ZTFh
MjdhNTIwOGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5
UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQ
cm9wZXJ0eUxpc3QuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxp
c3RQbGFuOjp3cml0ZUludGVnZXIoaW50IGludGVnZXIpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIG1faW50ZWdlclplcm9PYmplY3RSZWZlcmVuY2UgPSBtX2N1cnJlbnRPYmplY3RSZWZl
cmVuY2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2ludGVnZXJzLmFkZChpbnRlZ2Vy
LCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UpLnNlY29uZCkKKyAgICAgICAgaWYgKCFtX2ludGVn
ZXJzLmFkZChpbnRlZ2VyLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UpLmlzTmV3RW50cnkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgICsrbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNl
OwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJ
bnRlZ2VyKGludCBpbnRlZ2VyKQogdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICArK21fY3VycmVudEFnZ3JlZ2F0ZVNp
emU7Ci0gICAgaWYgKCFtX3N0cmluZ3MuYWRkKHN0cmluZywgbV9jdXJyZW50T2JqZWN0UmVmZXJl
bmNlKS5zZWNvbmQpCisgICAgaWYgKCFtX3N0cmluZ3MuYWRkKHN0cmluZywgbV9jdXJyZW50T2Jq
ZWN0UmVmZXJlbmNlKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAgICAgKyttX2N1cnJl
bnRPYmplY3RSZWZlcmVuY2U7CiAgICAgd3JpdGVTdHJpbmdPYmplY3Qoc3RyaW5nKTsKQEAgLTIy
NCwxMiArMjI0LDEyIEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2Vy
QXJyYXkoY29uc3QgaW50KiBpbnRlZ2Vycywgc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90IHNh
dmVkQWdncmVnYXRlU2l6ZSA9ICsrbV9jdXJyZW50QWdncmVnYXRlU2l6ZTsKICAgICBBU1NFUlQo
c2l6ZSk7Ci0gICAgcGFpcjxJbnRlZ2VyQXJyYXlNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1
bHQgPSBtX2ludGVnZXJBcnJheXMuYWRkKEludGVnZXJBcnJheShpbnRlZ2Vycywgc2l6ZSksIDAp
OwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICBJbnRlZ2VyQXJyYXlNYXA6OkFkZFJl
c3VsdCBhZGRSZXN1bHQgPSBtX2ludGVnZXJBcnJheXMuYWRkKEludGVnZXJBcnJheShpbnRlZ2Vy
cywgc2l6ZSksIDApOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgd3Jp
dGVJbnRlZ2VyKGludGVnZXJzW2ldKTsKLSAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IG1f
Y3VycmVudE9iamVjdFJlZmVyZW5jZSsrOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
ID0gbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlKys7CiAgICAgd3JpdGVBcnJheU9iamVjdChzaXpl
KTsKICAgICBtX2N1cnJlbnRBZ2dyZWdhdGVTaXplID0gc2F2ZWRBZ2dyZWdhdGVTaXplOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJUaWxlci5jcHAKaW5kZXggMWI1YTczMTllNDJkOWRmMTRiZDI1OTUxMTMxOTE2MmU4
NzE1YzE3NS4uZDUxN2FhYTdiNDAyNDQ4OTMyZGQ0MmJmOWRhYjQwZDEwMmE4ZDJjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRp
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyVGlsZXIuY3BwCkBAIC00MjgsMTggKzQyOCwxOCBAQCB2b2lkIExheWVyVGlsZXI6OnBy
b2Nlc3NUZXh0dXJlSm9iKGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgVGlsZUpvYnNNYXAmIHRpbGVK
b2JzTQogdm9pZCBMYXllclRpbGVyOjphZGRUaWxlSm9iKGNvbnN0IFRpbGVJbmRleCYgaW5kZXgs
IGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgVGlsZUpvYnNNYXAmIHRpbGVKb2JzTWFwKQogewogICAg
IC8vIEhhc2hNYXA6OmFkZCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGl0ZXJhdG9yIGV2ZW4gdGhl
IGtleSBhbHJlYWR5IGV4aXN0cy4KLSAgICBwYWlyPFRpbGVKb2JzTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9iKTsKKyAgICBUaWxlSm9ic01h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9IHRpbGVKb2JzTWFwLmFkZChpbmRleCwgJmpvYik7CiAKICAg
ICAvLyBTdWNjZXNzZnVsbHkgYWRkZWQgdGhlIG5ldyBqb2IuCi0gICAgaWYgKHJlc3VsdC5zZWNv
bmQpCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBJbiB0aGlzIGNhc2Ugd2UgbGVhdmUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICBpZiAoam9iLm1f
dHlwZSA9PSBUZXh0dXJlSm9iOjpEaXJ0eUNvbnRlbnRzICYmIHJlc3VsdC5maXJzdC0+c2Vjb25k
LT5tX3R5cGUgPT0gVGV4dHVyZUpvYjo6RGlzY2FyZENvbnRlbnRzKQorICAgIGlmIChqb2IubV90
eXBlID09IFRleHR1cmVKb2I6OkRpcnR5Q29udGVudHMgJiYgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQtPm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIE92ZXJyaWRlIHRoZSBwcmV2aW91cyBqb2IuCi0gICAgcmVzdWx0LmZpcnN0
LT5zZWNvbmQgPSAmam9iOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gJmpvYjsKIH0K
IAogdm9pZCBMYXllclRpbGVyOjpwZXJmb3JtVGlsZUpvYihMYXllclRpbGUqIHRpbGUsIGNvbnN0
IFRleHR1cmVKb2ImIGpvYiwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApp
bmRleCBmNmNjYjk1ZDdlNzEwYTNjMTNmNjFmMjIwMzY3ODBlYmViNjc3NWIzLi4xYzAxYjY5Yzgy
MmYxNDJiMzM2OWI1OTU3NzIxYTc0MjFiM2UyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI0ODgs
MTYgKzI0ODgsMTYgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJD
QTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGwKICAgICAvLyBBZGQgd2l0aCBh
IGR1bW15IHZhbHVlIHRvIGdldCBhbiBpdGVyYXRvciBmb3IgdGhlIGluc2VydGlvbiBwb3NpdGlv
biwgYW5kIGEgYm9vbGVhbiB0aGF0IHRlbGxzCiAgICAgLy8gdXMgd2hldGhlciB0aGVyZSdzIGFu
IGl0ZW0gdGhlcmUuIFRoaXMgdGVjaG5pcXVlIGF2b2lkcyB0d28gaGFzaCBsb29rdXBzLgogICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGR1bW15OwotICAgIHBhaXI8TGF5ZXJNYXA6Oml0ZXJh
dG9yLCBib29sPiBhZGRSZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7Ci0gICAg
aWYgKCFhZGRSZXN1bHQuc2Vjb25kKSB7CisgICAgTGF5ZXJNYXA6OkFkZFJlc3VsdCBhZGRSZXN1
bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkgewogICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMg
YWxyZWFkeS4KLSAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5n
ZXQoKTsKKyAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5n
ZXQoKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291
cmNlTGF5ZXIsIGNsb25lTGV2ZWwpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgcmVzdWx0TGF5
ZXItPnNldE5hbWUoU3RyaW5nOjpmb3JtYXQoIkNsb25lICVkIG9mIGxheWVyICVwIiwgY2xvbmVJ
RFswVV0sIHNvdXJjZUxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKICNlbmRpZgotICAgICAgICBh
ZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3VsdExheWVyOworICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IHJlc3VsdExheWVyOwogICAgIH0KIAogICAgIHJldHVybiByZXN1
bHRMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAppbmRleCAwMGM2MzA4MGRmYzc3
ZTRiOGM0MmIxNmU2ZGE2ODA5OTk5MTc3ZGE4Li5iNGZlYWVlNjgyZDhjNDQ1OWE4MmJmYTZkZDlk
ZWY2OTY2YTNhYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIExheWVyQ2hhbmdlc0ZsdXNoZXI6OkxheWVyQ2hhbmdlc0ZsdXNoZXIoKQogCiB2b2lk
IExheWVyQ2hhbmdlc0ZsdXNoZXI6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oQWJzdHJh
Y3RDQUNGTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKLSAgICBpZiAoIW1faG9zdHNXaXRoQ2hhbmdl
c1RvRmx1c2guYWRkKGhvc3QpLnNlY29uZCB8fCBtX2hvb2spCisgICAgaWYgKCFtX2hvc3RzV2l0
aENoYW5nZXNUb0ZsdXNoLmFkZChob3N0KS5pc05ld0VudHJ5IHx8IG1faG9vaykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgc2V0SG9vaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4u
Y3BwCmluZGV4IDcxMWI4OTZhYzYxMjg4MzYyZWQ3MmVkZjcyYTQ3MDkyZmU3MjI0YmUuLmNjNTJj
NTJlYjcwNTc4MmRlMWY5NjhkYzgwM2M0NWU0ZjJhZTIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRp
bHNDaHJvbWl1bVdpbi5jcHAKQEAgLTQxNCw4ICs0MTQsOCBAQCBib29sIGdldERlcml2ZWRGb250
RGF0YShjb25zdCBVQ2hhciogZmFtaWx5LAogICAgICAgICAvLyBhIGZvbnQgZXZlbiBpZiB0aGVy
ZSdzIG5vIGZvbnQgbWF0Y2hpbmcgdGhlIG5hbWUuIE5lZWQgdG8KICAgICAgICAgLy8gY2hlY2sg
aXQgYWdhaW5zdCB3aGF0IHdlIGFjdHVhbGx5IHdhbnQgKGFzIGlzIGRvbmUgaW4KICAgICAgICAg
Ly8gRm9udENhY2hlV2luLmNwcCkKLSAgICAgICAgcGFpcjxGb250RGF0YUNhY2hlOjppdGVyYXRv
ciwgYm9vbD4gZW50cnkgPSBmb250RGF0YUNhY2hlLmFkZChmb250S2V5LCBGb250RGF0YSgpKTsK
LSAgICAgICAgZGVyaXZlZCA9ICZlbnRyeS5maXJzdC0+c2Vjb25kOworICAgICAgICBGb250RGF0
YUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBmb250RGF0YUNhY2hlLmFkZChmb250S2V5LCBGb250
RGF0YSgpKTsKKyAgICAgICAgZGVyaXZlZCA9ICZlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogICAg
ICAgICBkZXJpdmVkLT5oZm9udCA9IENyZWF0ZUZvbnRJbmRpcmVjdChsb2dmb250KTsKICAgICAg
ICAgLy8gR2V0QXNjZW50IG1heSByZXR1cm4ga1VuZGVmaW5lZEFzY2VudCwgYnV0IHdlIHN0aWxs
IHdhbnQgdG8KICAgICAgICAgLy8gY2FjaGUgaXQgc28gdGhhdCB3ZSB3b24ndCBoYXZlIHRvIGNh
bGwgQ3JlYXRlRm9udEluZGlyZWN0IG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAzNzJhMGUwOGU4ZjNiMjdjNzQ1ZWI0NWIxNTIz
NTM5NGU3MjAyNmNiLi45OGVmMjU0YWE5OGY1ODIyODdmMjQ2MTgyMjc3MDY4NjQ0ZmM0ZjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRB
bmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3UKICAgICAgICAgICAgIC8v
IG9mIGJsb2NrZWQgcHJvcGVydGllcy4KICAgICAgICAgICAgIGJvb2wgbnVsbEludGVyc2VjdGlv
biA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKFRhcmdldFByb3BlcnRpZXM6Oml0ZXJhdG9yIHBJ
dGVyID0gZW5xdWV1ZWRQcm9wZXJ0aWVzLmJlZ2luKCk7IHBJdGVyICE9IGVucXVldWVkUHJvcGVy
dGllcy5lbmQoKTsgKytwSXRlcikgewotICAgICAgICAgICAgICAgIGlmICghYmxvY2tlZFByb3Bl
cnRpZXMuYWRkKCpwSXRlcikuc2Vjb25kKQorICAgICAgICAgICAgICAgIGlmICghYmxvY2tlZFBy
b3BlcnRpZXMuYWRkKCpwSXRlcikuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgbnVs
bEludGVyc2VjdGlvbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQVRT
VUkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckFUU1VJLmNwcAppbmRleCAwNDM3YmNkZmMwOWI5NjdkYTdmZTE5NmYyN2JmMmUw
ZTcxMjJlZDk5Li5iZTlmNzQxMDRmZTc0MzQ0NTcxNTY0MTYzY2Y3YWFkNzBlMDcyYzRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQVRTVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAKQEAgLTI3OCwxNSArMjc4LDE1IEBA
IHN0YXRpYyB2b2lkIGRpc2FibGVMaWdhdHVyZXMoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRE
YXRhLCBBVFNVU3R5bGUgYXRzdVN0eWxlCiBzdGF0aWMgQVRTVVN0eWxlIGluaXRpYWxpemVBVFNV
U3R5bGUoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBUeXBlc2V0dGluZ0ZlYXR1cmVz
IHR5cGVzZXR0aW5nRmVhdHVyZXMpCiB7CiAgICAgdW5zaWduZWQga2V5ID0gdHlwZXNldHRpbmdG
ZWF0dXJlcyArIDE7Ci0gICAgcGFpcjxIYXNoTWFwPHVuc2lnbmVkLCBBVFNVU3R5bGU+OjppdGVy
YXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLmFkZChrZXks
IDApOwotICAgIEFUU1VTdHlsZSYgYXRzdVN0eWxlID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7
Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEhhc2hNYXA8dW5zaWduZWQsIEFUU1VT
dHlsZT46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRk
KGtleSwgMCk7CisgICAgQVRTVVN0eWxlJiBhdHN1U3R5bGUgPSBhZGRSZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4g
YXRzdVN0eWxlOwogCiAgICAgQVRTVUZvbnRJRCBmb250SUQgPSBmb250RGF0YS0+cGxhdGZvcm1E
YXRhKCkuY3RGb250KCkgPyBDVEZvbnRHZXRQbGF0Zm9ybUZvbnQoZm9udERhdGEtPnBsYXRmb3Jt
RGF0YSgpLmN0Rm9udCgpLCAwKSA6IDA7CiAgICAgaWYgKCFmb250SUQpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJ1bmFibGUgdG8gZ2V0IEFUU1VGb250SUQgZm9yICVwIiwgZm9udERhdGEtPnBsYXRm
b3JtRGF0YSgpLmZvbnQoKSk7Ci0gICAgICAgIGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5yZW1v
dmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLnJl
bW92ZShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZv
bnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IDgzMmJiOWRkZjhkYTEyOThmZDM5MzI1
NjI4NGQwNGU2MzU4ZjI0MjYuLjA1MTkzNzQyYzU4NTJkYmU5YzljZWQ2NGI5YTA3YWFkMmMxZWE0
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKQEAgLTQyLDkgKzQyLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogQ0ZEaWN0aW9uYXJ5UmVmIFNpbXBsZUZvbnREYXRhOjpnZXRDRlN0
cmluZ0F0dHJpYnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVzLCBG
b250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQga2V5ID0g
dHlwZXNldHRpbmdGZWF0dXJlcyArIDE7Ci0gICAgcGFpcjxIYXNoTWFwPHVuc2lnbmVkLCBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9D
RlN0cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4oKSk7
Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0g
YWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAg
IEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+ID46OkFkZFJlc3Vs
dCBhZGRSZXN1bHQgPSBtX0NGU3RyaW5nQXR0cmlidXRlcy5hZGQoa2V5LCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPigpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgYXR0cmli
dXRlc0RpY3Rpb25hcnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gYXR0cmlidXRlc0RpY3Rpb25hcnku
Z2V0KCk7CiAgICAgCiAgICAgYm9vbCB0cmVhdExpbmVBc1ZlcnRpY2FsID0gb3JpZW50YXRpb24g
PT0gVmVydGljYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KaW5kZXggOGY0YTkxOTNlZjRkNTMyNzFiZTU0
YjBkYzVlZmJkOWRlYmFiZGM0NS4uNzRiMjY4NmQ2Y2U2MGJiZmE3MGFhMGIyMjUzMzViOTYwMzIz
NjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Np
bXBsZUZvbnREYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQpAQCAtNDQwLDkgKzQ0MCw5IEBAIGJvb2wgU2ltcGxl
Rm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzCiAgICAgaWYgKCFtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9y
dCkKICAgICAgICAgbV9jb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQgPSBhZG9wdFB0
cihuZXcgSGFzaE1hcDxTdHJpbmcsIGJvb2w+KTsKIAotICAgIHBhaXI8V1RGOjpIYXNoTWFwPFN0
cmluZywgYm9vbD46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX2NvbWJpbmluZ0NoYXJh
Y3RlclNlcXVlbmNlU3VwcG9ydC0+YWRkKFN0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBmYWxz
ZSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gYWRkUmVzdWx0
LmZpcnN0LT5zZWNvbmQ7CisgICAgV1RGOjpIYXNoTWFwPFN0cmluZywgYm9vbD46OkFkZFJlc3Vs
dCBhZGRSZXN1bHQgPSBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydC0+YWRkKFN0
cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBmYWxzZSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAg
ICAgUmV0YWluUHRyPENHRm9udFJlZj4gY2dGb250KEFkb3B0Q0YsIENURm9udENvcHlHcmFwaGlj
c0ZvbnQocGxhdGZvcm1EYXRhKCkuY3RGb250KCksIDApKTsKIApAQCAtNDYyLDcgKzQ2Miw3IEBA
IGJvb2wgU2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNl
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB0cnVlOworICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZv
cm1EYXRhLmNwcAppbmRleCA2OTJmZDZkMGQxZjFkYjgxYWQyOTcyYTNmMzM0MzdiZWY2ZmU2MzVk
Li4xOTc5MGFkNDliMzMwM2RkN2I2MmM3ZTdhMGE4MjM2NzdiNGNmZjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZv
cm1EYXRhLmNwcApAQCAtMjg1LDExICsyODUsMTEgQEAgUGFzc1JlZlB0cjxGaXhlZFNpemVGb250
RGF0YT4gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWkK
IHN0YXRpYyBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPiBjcmVhdGVGaXhlZFNpemVGb250
RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgdW5zaWduZWQgd2VpZ2h0LCBib29sIGl0
YWxpYykKIHsKICAgICBGaXhlZFNpemVGb250RGF0YUtleSBrZXkoZmFtaWx5LCB3ZWlnaHQsIGl0
YWxpYyk7Ci0gICAgcGFpcjxGaXhlZFNpemVGb250Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBnX2ZpeGVkU2l6ZUZvbnRDYWNoZS5hZGQoa2V5LCBSZWZQdHI8Rml4ZWRTaXplRm9udERh
dGE+KCkpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9IEZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7
CisgICAgRml4ZWRTaXplRm9udENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZ19maXhlZFNpemVG
b250Q2FjaGUuYWRkKGtleSwgUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPigpKTsKKyAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gRml4
ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdlaWdodCwgaXRhbGljKTsKIAotICAgIHJl
dHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiB9CiAKIHN0YXRpYyBMT05HIHRvR0RJRm9udFdlaWdodChGb250V2VpZ2h0IGZvbnRX
ZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGszLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMu
Y3BwCmluZGV4IGE2NjliYzhlZjg1MjNkNDg2NmYxZWI4MGEyNTEyMzMwMmFkNGM0NWIuLjcyMGYw
ZmQzNjAxYWQ1NWM0MWYwNDhkYTM4ZTkwYjE0MGM3ODQyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCkBAIC03Nyw5ICs3Nyw5IEBAIHN0
YXRpYyBTdHlsZUNvbnRleHRNYXAmIHN0eWxlQ29udGV4dE1hcCgpCiAKIHN0YXRpYyBHdGtTdHls
ZUNvbnRleHQqIGdldFN0eWxlQ29udGV4dChHVHlwZSB3aWRnZXRUeXBlKQogewotICAgIHN0ZDo6
cGFpcjxTdHlsZUNvbnRleHRNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBzdHlsZUNvbnRl
eHRNYXAoKS5hZGQod2lkZ2V0VHlwZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAg
ICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgU3R5bGVDb250ZXh0
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3R5bGVDb250ZXh0TWFwKCkuYWRkKHdpZGdldFR5cGUs
IDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIAogICAgIEd0a1dpZGdldFBhdGgqIHBhdGggPSBndGtf
d2lkZ2V0X3BhdGhfbmV3KCk7CiAgICAgZ3RrX3dpZGdldF9wYXRoX2FwcGVuZF90eXBlKHBhdGgs
IHdpZGdldFR5cGUpOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBHdGtTdHlsZUNvbnRleHQq
IGdldFN0eWxlQ29udGV4dChHVHlwZSB3aWRnZXRUeXBlKQogICAgIGd0a19zdHlsZV9jb250ZXh0
X3NldF9wYXRoKGNvbnRleHQuZ2V0KCksIHBhdGgpOwogICAgIGd0a193aWRnZXRfcGF0aF9mcmVl
KHBhdGgpOwogCi0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBjb250ZXh0OworICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kID0gY29udGV4dDsKICAgICByZXR1cm4gY29udGV4dC5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5jcHAKaW5kZXggNDRjNTY4MWZiYmQ1MzQ4YjIwMTQ5MzUxZmEzNjgzMmQ3OTU4MjYyOC4uNTAw
OTFlMTlkM2FmNTZmZjRhOGRmMTc1YmY4OTc4NzAwNzYxNDI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIFN0cmluZyBIVFRQSGVhZGVyTWFwOjpnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBj
b25zdAogICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGlu
Z0hhc2g+OjpnZXQobmFtZSk7CiB9CiAKLXBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJv
b2w+IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCitIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgSFRUUEhlYWRlck1hcDo6YWRk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRk
KG5hbWUsIHZhbHVlKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEhUVFBIZWFkZXJNYXA6
OmNvbnRhaW5zKGNvbnN0IGNoYXIqIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGZpbmQ8Y29uc3Qg
Y2hhciosIENhc2VGb2xkaW5nQ1N0cmluZ1RyYW5zbGF0b3I+KG5hbWUpICE9IGVuZCgpOwogfQog
Ci1wYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBIVFRQSGVhZGVyTWFwOjphZGQo
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0hUVFBIZWFkZXJNYXA6OkFk
ZFJlc3VsdCBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2Fz
ZUZvbGRpbmdIYXNoPjo6YWRkPGNvbnN0IGNoYXIqLCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xh
dG9yPihuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IDAyMDcxZTM2MTBjMWQ0YjRmY2RmNGQ2Yzk1OWI0OWY4
N2YzYTVmMTUuLjEyYmRlMDY4OTdlN2NlM2YzZWM5MDEyZTFjMzdmZGZmZThkODljMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC01
MSwxMiArNTEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgU3Ry
aW5nIGdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgICAgIHBhaXI8
aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICAgICAgLy8gQWx0ZXJuYXRlIGFjY2Vzc29y
cyB0aGF0IGFyZSBmYXN0ZXIgdGhhbiBjb252ZXJ0aW5nIHRoZSBjaGFyKiB0byBBdG9taWNTdHJp
bmcgZmlyc3QuCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogICAg
ICAgICBTdHJpbmcgZ2V0KGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICAgICAgcGFpcjxpdGVyYXRv
ciwgYm9vbD4gYWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAg
ICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OwogICAgICAgICAKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCA0M2E2NGU5NzA3MjQwNDA0
MjI3ZGNiMGQ1ZTI1NmQzNzRiODczNTlhLi4zNTA5NzkyOTI3OGM3NjA2NGM0YjBkZWI5YWZlMzlm
ZjE5YmU0YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTM3MSw5ICszNzEsOSBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdEJhc2U6OnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
KQogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSAKIHsKICAgICB1cGRhdGVSZXNv
dXJjZVJlcXVlc3QoKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX2h0dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsgCi0gICAgaWYgKCFy
ZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1
ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9odHRwSGVhZGVyRmll
bGRzLmFkZChuYW1lLCB2YWx1ZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7CiAKICAgICBpZiAodXJs
KCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVw
ZGF0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
aW5kZXggM2U1OThiYWI2YjlhODUwYTVhNmNjOTI4YzAwNjljMDg5M2E4MTA5ZS4uNmU4MTRhZWI1
ZWY5ZDYzZTA2MjBmYWI4MmI2YjJkNzM2NjZmMzVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBib29sIFBsdWdpbkRhdGFi
YXNlOjphZGQoUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBwcnBQYWNrYWdlKQogCiAgICAgUmVm
UHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBwcnBQYWNrYWdlOwogCi0gICAgaWYgKCFtX3Bs
dWdpbnMuYWRkKHBhY2thZ2UpLnNlY29uZCkKKyAgICBpZiAoIW1fcGx1Z2lucy5hZGQocGFja2Fn
ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9wbHVnaW5zQnlQ
YXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIHZv
aWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAKICAgICAg
ICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQ
YWNrYWdlRnJvbUNhY2hlKHBhdGgsIGxhc3RNb2RpZmllZCwgbmFtZSwgZGVzYywgbWltZURlc2Mp
OwogCi0gICAgICAgIGlmIChwYWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2UpLnNl
Y29uZCkgeworICAgICAgICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdl
KS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcy5h
ZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlLT5sYXN0TW9kaWZpZWQoKSk7CiAgICAgICAgICAg
ICBjYWNoZWRQbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRh
YmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKaW5kZXggMjcxMjFjNjY0ZTNjNmI2YmM2YjVkNmVkZGJiYWJiY2Y3MmI3NjllZC4uZmZi
NDIxYTRjNDI4YWNlOTI0ZGYzMzNlMGEwMDg1MTk2MzYxMDFiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMTQyLDcgKzE0Miw3
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNo
U2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICBTdHJpbmcgZnVsbFBhdGggPSAqaXQgKyAiXFwiICsgZmlsZW5hbWU7Ci0gICAg
ICAgICAgICBpZiAoIXVuaXF1ZUZpbGVuYW1lcy5hZGQoZnVsbFBhdGgpLnNlY29uZCkKKyAgICAg
ICAgICAgIGlmICghdW5pcXVlRmlsZW5hbWVzLmFkZChmdWxsUGF0aCkuaXNOZXdFbnRyeSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRkKGZ1bGxQYXRo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDkxYjIwMzJh
M2Q2OGZlMWI5MjhkYWM1MTQzOTAxNzA5YjBhZWI3OGIuLjgwYTM2YzE0NDA1MDNhZTBmZmIyN2Uz
YWZhOWFlODRiNDQ2OGIyZTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMzgzMyw3ICszODMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkUGVyY2VudEhl
aWdodERlc2NlbmRhbnQoUmVuZGVyQm94KiBkZXNjZW5kYW50KQogICAgICAgICBkZXNjZW5kYW50
U2V0ID0gbmV3IEhhc2hTZXQ8UmVuZGVyQm94Kj47CiAgICAgICAgIGdQZXJjZW50SGVpZ2h0RGVz
Y2VuZGFudHNNYXAtPnNldCh0aGlzLCBkZXNjZW5kYW50U2V0KTsKICAgICB9Ci0gICAgYm9vbCBh
ZGRlZCA9IGRlc2NlbmRhbnRTZXQtPmFkZChkZXNjZW5kYW50KS5zZWNvbmQ7CisgICAgYm9vbCBh
ZGRlZCA9IGRlc2NlbmRhbnRTZXQtPmFkZChkZXNjZW5kYW50KS5pc05ld0VudHJ5OwogICAgIGlm
ICghYWRkZWQpIHsKICAgICAgICAgQVNTRVJUKGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5n
ZXQoZGVzY2VuZGFudCkpOwogICAgICAgICBBU1NFUlQoZ1BlcmNlbnRIZWlnaHRDb250YWluZXJN
YXAtPmdldChkZXNjZW5kYW50KS0+Y29udGFpbnModGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBlMzY2MjhmOTBj
YjYxYzkwYjJiMmY3Y2YyN2IyMzM3MGUyMWM1NzAzLi42MGNhM2IyY2FiY2QxMDRlMDdjOThjYTVm
YjYzMGY4Y2Y5ZDRjZDFlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtNjYyLDE0ICs2NjIsMTQgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4oUm9vdElubGluZUJveCogbGluZUJveCwg
QmlkaVJ1biogcnUKICAgICBydW4tPm1fYm94LT5zZXRMb2dpY2FsV2lkdGgocmVuZGVyZXItPndp
ZHRoKHJ1bi0+bV9zdGFydCwgcnVuLT5tX3N0b3AgLSBydW4tPm1fc3RhcnQsIHhQb3MsIGxpbmVJ
bmZvLmlzRmlyc3RMaW5lKCksICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdykgKyBoeXBo
ZW5XaWR0aCk7CiAgICAgaWYgKCFmYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSkgewogICAgICAgICBB
U1NFUlQocnVuLT5tX2JveC0+aXNUZXh0KCkpOwotICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVU
ZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuZmlyc3Q7CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRG
YWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGlu
ZVRleHRCb3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERh
dGEqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgQVNTRVJUKGl0LT5z
ZWNvbmQuZmlyc3QuaXNFbXB0eSgpKTsKICAgICAgICAgY29weVRvVmVjdG9yKGZhbGxiYWNrRm9u
dHMsIGl0LT5zZWNvbmQuZmlyc3QpOwogICAgICAgICBydW4tPm1fYm94LT5wYXJlbnQoKS0+Y2xl
YXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CiAgICAgfQogICAg
IGlmICgoZ2x5cGhPdmVyZmxvdy50b3AgfHwgZ2x5cGhPdmVyZmxvdy5ib3R0b20gfHwgZ2x5cGhP
dmVyZmxvdy5sZWZ0IHx8IGdseXBoT3ZlcmZsb3cucmlnaHQpKSB7CiAgICAgICAgIEFTU0VSVChy
dW4tPm1fYm94LT5pc1RleHQoKSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3go
cnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBH
bHlwaE92ZXJmbG93KCkpKS5maXJzdDsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJv
eChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCks
IEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLnNlY29uZCA9
IGdseXBoT3ZlcmZsb3c7CiAgICAgICAgIHJ1bi0+bV9ib3gtPmNsZWFyS25vd25Ub0hhdmVOb092
ZXJmbG93KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCmluZGV4IDFjODkyYzg4ZWMyMzQwZTNmYjkzZWNhZGYxMmI5NTg0NzFhODYwMDQu
LjRkMzExODVmYmEwOTNlZThhZjlkNGIwYTU3YmZjNGNkMDQ0NDM2YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTI2NSw4ICsyNjUsOCBA
QCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNoZWNrSW52YWxpZFJlZ2lvbnMoKQogCiB2b2lkIFJl
bmRlckZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyRmxvd1RocmVh
ZCogb3RoZXJGbG93VGhyZWFkKQogewotICAgIHN0ZDo6cGFpcjxSZW5kZXJGbG93VGhyZWFkQ291
bnRlZFNldDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1Nl
dC5hZGQob3RoZXJGbG93VGhyZWFkKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIFJl
bmRlckZsb3dUaHJlYWRDb3VudGVkU2V0OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9sYXlvdXRCZWZv
cmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJlYWQpOworICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlIHNlZSB0aGlzIGRl
cGVuZGVuY3kuIE1ha2Ugc3VyZSB3ZSByZWNhbGN1bGF0ZSBhbGwgdGhlIGRlcGVuZGVuY2llcy4K
ICAgICAgICAgdmlldygpLT5zZXRJc1JlbmRlckZsb3dUaHJlYWRPcmRlckRpcnR5KHRydWUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggYWYy
Njg3NTAwZTljNmExZDViN2VjMmExODE3OGU4YWIzYmY5ZjBjYi4uMWIzMGY2NjQ5YjJhMDk1NjZh
MDU3NzIyOTkzMjFmMmEwNDE4OTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5k
ZXJSZWdpb246OnNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsCiAg
ICAgaWYgKCFtX2lzVmFsaWQgfHwgIW1fZmxvd1RocmVhZCkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJl
Z2lvbkluZm8uYWRkKGJveCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmVu
ZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJv
eCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoYm94SW5mbykKICAgICAgICAg
KmJveEluZm8gPSBSZW5kZXJCb3hSZWdpb25JbmZvKGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxS
aWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCmluZGV4IDkwN2ZlMTY3N2IxNzA0ODJjNmY0YWM1N2VkOTcxZDU3MjE5MWFl
NDEuLmY4ZjQ5M2RiODVhMGRkYjdhNjljMWYxNmNiMTc1ZjcwYWQ5ZGNiODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAg
ICAgaWYgKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JK
RUNUQk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8R3JhZGllbnREYXRhPiYgZ3JhZGllbnREYXRhID0g
bV9ncmFkaWVudE1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93
blB0cjxHcmFkaWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZChvYmpl
Y3QsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCiAg
ICAgICAgIGdyYWRpZW50RGF0YSA9IGFkb3B0UHRyKG5ldyBHcmFkaWVudERhdGEpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5jcHAKaW5kZXggYmVjMGYzMzc0ZjQ2NDM2MmE5YTU4M2VhZjE5ODM1MDI4MWI4ZDAy
Yy4uNGRjNTAxYjgwNmIzZDhkZjI1NDc0NTQzYmNmY2ZmMzg3NjBkNjI2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6
YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgaWYg
KG1fYXR0cmlidXRlcy5wYXR0ZXJuVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZ
UEVfT0JKRUNUQk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0
YSA9IG1fcGF0dGVybk1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAg
IE93blB0cjxQYXR0ZXJuRGF0YT4mIHBhdHRlcm5EYXRhID0gbV9wYXR0ZXJuTWFwLmFkZChvYmpl
Y3QsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFwYXR0ZXJuRGF0YSkKICAg
ICAgICAgcGF0dGVybkRhdGEgPSBhZG9wdFB0cihuZXcgUGF0dGVybkRhdGEpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAppbmRleCA0OGRiNjk4MDMyMjJhNGNiMzlhZDFhODUw
MGZhNmM2Mzg0ODIwNjg5Li44ZTQyZDJmMTc2ZGQzYjExMTJhMDFhNTFkOGRiNjJmNGIzOGJiYTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBA
QCBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnNldEl0ZW0oY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdQogICAgIH0KICAgICBtX2N1cnJlbnRMZW5ndGggPSBu
ZXdMZW5ndGg7CiAKLSAgICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciwg
Ym9vbD4gYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwotICAgIGlmICghYWRkUmVz
dWx0LnNlY29uZCkKLSAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsKKyAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFk
ZChrZXksIHZhbHVlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHZhbHVlOwogCiAgICAgaW52YWxpZGF0ZUl0ZXJh
dG9yKCk7CiAKQEAgLTE3MSw4ICsxNzEsOCBAQCB2b2lkIFN0b3JhZ2VNYXA6OmltcG9ydEl0ZW0o
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQmUgc3Vy
ZSB0byBjb3B5IHRoZSBrZXlzL3ZhbHVlcyBhcyBpdGVtcyBpbXBvcnRlZCBvbiBhIGJhY2tncm91
bmQgdGhyZWFkIGFyZSBkZXN0aW5lZAogICAgIC8vIHRvIGNyb3NzIGEgdGhyZWFkIGJvdW5kYXJ5
Ci0gICAgcGFpcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1fbWFwLmFkZChrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7ICAvLyBUcnVlIGlmIHRo
ZSBrZXkgZGlkbid0IGV4aXN0IHByZXZpb3VzbHkuCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1
ZS5pc29sYXRlZENvcHkoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsgLy8gVHJ1ZSBpZiB0aGUga2V5IGRpZG4ndCBleGlzdCBwcmV2aW91c2x5LgogCiAg
ICAgQVNTRVJUKG1fY3VycmVudExlbmd0aCArIGtleS5sZW5ndGgoKSA+PSBtX2N1cnJlbnRMZW5n
dGgpOwogICAgIG1fY3VycmVudExlbmd0aCArPSBrZXkubGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDgxMGI5NjY1YzFmYTgyMGUw
MTk1NGY3MWYxN2FlYzc3ZTU1ZGQyNWYuLjk5OTgwODk0NWE1ODhkNzA5YWZhYzQ3NTYzYjFmNDYx
YzBjY2ExZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVu
c2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBl
bmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTVkdTdHlsZWQKICAgICAvLyBt
YXAgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIFNvIHdlIGFkZCB3aXRoIGEgdmFsdWUg
b2YgMCwgYW5kIGl0IGVpdGhlciBmaW5kcyB0aGUKICAgICAvLyBleGlzdGluZyBlbGVtZW50IG9y
IGFkZHMgYSBuZXcgb25lIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gVGhlICIuZmlyc3QtPnNlY29u
ZCIgaWRpb20gZ2V0cwogICAgIC8vIHVzIHRvIHRoZSBpdGVyYXRvciBmcm9tIGFkZCdzIHJlc3Vs
dCwgYW5kIHRoZW4gdG8gdGhlIHZhbHVlIGluc2lkZSB0aGUgaGFzaCB0YWJsZS4KLSAgICBTVkdQ
ZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCAwKS5maXJz
dC0+c2Vjb25kOworICAgIFNWR1BlbmRpbmdFbGVtZW50cyomIHNldCA9IG1fcGVuZGluZ1Jlc291
cmNlcy5hZGQoaWQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFzZXQpCiAgICAgICAg
IHNldCA9IG5ldyBTVkdQZW5kaW5nRWxlbWVudHM7CiAgICAgc2V0LT5hZGQoZWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3MTIyMDBjZTY5M2M5ZDVkYWIx
ODBhMDcxNWZlYjdhMWY5ZjYzNTMzLi5hNzFjNDQ1NTUzODdmNWZmODY4NDQzNTI5ODc0MjQ0NDJj
Njg4NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg5OSw5ICs4
OTksOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpz
ZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUsIHZhbHVlKTsKLSAgICBpZiAoIXJl
c3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsICIgKyB2YWx1
ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZXF1ZXN0SGVhZGVy
cy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsICIgKyB2YWx1ZTsKIH0KIAogU3RyaW5nIFhN
TEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDE1NGI2N2U5MmQz
MmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEuLjcwN2NjN2ZjZTJjNzM2MThlODI5ODZkZDZi
OTZjNWZlZjczOThlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAt
MzUwLDcgKzM1MCw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgICAgIC8v
IElmIHRoZXJlIGFyZSBzZXZlcmFsIG5vZGVzIHdpdGggdGhlIHNhbWUgaWQsIGlkKCkgc2hvdWxk
IHJldHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAgICAvLyBJbiBXZWJLaXQsIGdldEVsZW1lbnRC
eUlkIGJlaGF2ZXMgc28sIHRvbywgYWx0aG91Z2ggaXRzIGJlaGF2aW9yIGluIHRoaXMgY2FzZSBp
cyBmb3JtYWxseSB1bmRlZmluZWQuCiAgICAgICAgIE5vZGUqIG5vZGUgPSBjb250ZXh0U2NvcGUt
PmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZExpc3QuY2hhcmFjdGVycygpICsgc3RhcnRQb3MsIGVu
ZFBvcyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgIGlmIChub2RlICYmIHJlc3VsdFNldC5hZGQobm9k
ZSkuc2Vjb25kKQorICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKG5vZGUpLmlzTmV3
RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOwogICAgICAgICAKICAgICAg
ICAgc3RhcnRQb3MgPSBlbmRQb3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCmluZGV4IGQ5ZDFm
ZDQ3ZDY2NGYwYzliZGYxNDZhYzIxZGQ5M2FkZmFiNGEyMDQuLmJhMWRlZDM5ZTE4NGEwM2U1ZTE4
MzU1M2Q4MGVkNmNhZGZlY2ZhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBMb2NhdGlvblBhdGg6OmV2YWx1YXRlKE5vZGVTZXQmIG5vZGVzKSBj
b25zdAogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXgg
PCBtYXRjaGVzLnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gbWF0Y2hlc1tub2RlSW5kZXhdOwotICAgICAgICAgICAgICAgIGlmICghbmVlZFRvQ2hl
Y2tGb3JEdXBsaWNhdGVOb2RlcyB8fCBuZXdOb2Rlc1NldC5hZGQobm9kZSkuc2Vjb25kKQorICAg
ICAgICAgICAgICAgIGlmICghbmVlZFRvQ2hlY2tGb3JEdXBsaWNhdGVOb2RlcyB8fCBuZXdOb2Rl
c1NldC5hZGQobm9kZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZXMu
YXBwZW5kKG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoUHJlZGljYXRlLmNwcAppbmRleCA1OGNkODc5OGViMzYzYWViYjZiNDhjMzM5NTY3MDBmZjEw
NzVhNTc3Li4zNjgwMGExMTc0MTZkMDcyNmEyYWIyMjI4OTk3YTBiZmIxYzg5MDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBWYWx1ZSBV
bmlvbjo6ZXZhbHVhdGUoKSBjb25zdAogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmhzTm9kZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IHJoc05vZGVzW2ld
OwotICAgICAgICBpZiAobm9kZXMuYWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAgaWYgKG5vZGVz
LmFkZChub2RlKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0U2V0LmFwcGVuZChub2Rl
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhU
VFBMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZElu
Zm8uY3BwCmluZGV4IGUzZGNlOGM1YWM0ZDZmNmNlNDc2OThlMmYzYTcxMjUyNjEyMmM3NTkuLjNj
MGNmMTVkNWM5YzczYWM2NTc4YzliYTc3NmNlOWJlOTM0YWVlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBA
IHZvaWQgV2ViSFRUUExvYWRJbmZvOjpzZXRFbmNvZGVkRGF0YUxlbmd0aChsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgpCiAKIHN0YXRpYyB2b2lkIGFkZEhlYWRlcihIVFRQSGVhZGVyTWFwKiBt
YXAsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtYXAtPmFkZChu
YW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmly
c3QtPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZhbHVlKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsICIgKyBT
dHJpbmcodmFsdWUpOwogfQogCiB2b2lkIFdlYkhUVFBMb2FkSW5mbzo6YWRkUmVxdWVzdEhlYWRl
cihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggZWMyMTJlNTE3
N2NjNTg2MzhjZTAxNzJjNzVmMTA4ZDNmMzc1MmQzYi4uMDdkNWE0NWY4OGNlOWM4YTM0Mzc0OTMz
YzJiNDM3NjllNGEwMDc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVS
TFJlc3BvbnNlLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBXZWJVUkxSZXNwb25zZTo6
YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JgogICAgIC8vIEZJWE1FOiBBZGQgYW4gYWRkSFRUUEhlYWRlckZpZWxkIG1ldGhvZCB0byBSZXNv
dXJjZVJlc3BvbnNlLgogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG1hcCA9IG1fcHJpdmF0ZS0+
bV9yZXNvdXJjZVJlc3BvbnNlLT5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAgU3RyaW5nIHZhbHVl
U3RyKHZhbHVlKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPQorICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPQogICAgICAgICBjb25z
dF9jYXN0PEhUVFBIZWFkZXJNYXAqPigmbWFwKS0+YWRkKG5hbWUsIHZhbHVlU3RyKTsKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsICIg
KyB2YWx1ZVN0cjsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWVTdHI7CiB9CiAKIHZvaWQgV2ViVVJMUmVz
cG9uc2U6OmNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXRDT01BUEkuY3BwCmluZGV4IGM0NDUwZjc0OWVlMWZhOTY0NWE2MTMwZWM4YmMz
YmVmOTU0NGExNGEuLjljOWNjMDI2YjQ3YjRmZWE5NjBjNjM5ODQ2ZTBlYmE1MWM0NjUzYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcApAQCAtNTEsMTAgKzUxLDkgQEAgc3RhdGljIENP
TVB0cjxJQ2xhc3NGYWN0b3J5PiBjbGFzc0ZhY3RvcnkoY29uc3QgQ0xTSUQmIGNsc2lkKQogICAg
IHR5cGVkZWYgSGFzaE1hcDxDTFNJRCwgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+LCBDTFNJREhhc2gs
IENMU0lESGFzaFRyYWl0cz4gRmFjdG9yeU1hcDsKICAgICBzdGF0aWMgRmFjdG9yeU1hcCYgZmFj
dG9yaWVzID0gKm5ldyBGYWN0b3J5TWFwOwogCi0gICAgcGFpcjxGYWN0b3J5TWFwOjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gZmFjdG9yaWVzLmFkZChjbHNpZCwgMCk7Ci0gICAgQ09NUHRyPElD
bGFzc0ZhY3Rvcnk+JiBmYWN0b3J5ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAgYm9vbCBh
ZGRlZCA9IHJlc3VsdC5zZWNvbmQ7Ci0gICAgaWYgKGFkZGVkICYmIEZBSUxFRChEbGxHZXRDbGFz
c09iamVjdChjbHNpZCwgX191dWlkb2YoZmFjdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmZmFjdG9yeSkpKSkKKyAgICBGYWN0b3J5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZmFjdG9y
aWVzLmFkZChjbHNpZCwgMCk7CisgICAgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+JiBmYWN0b3J5ID0g
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYmIEZB
SUxFRChEbGxHZXRDbGFzc09iamVjdChjbHNpZCwgX191dWlkb2YoZmFjdG9yeSksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmZmFjdG9yeSkpKSkKICAgICAgICAgZmFjdG9yeSA9IDA7CiAKICAg
ICByZXR1cm4gZmFjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnRDb2RlcnMuaAppbmRleCBhMmZmYTBmMjUwYmU4OTA2MTI0MDcxY2Q0ODI5ZDc4OGI3
YjhhZjM4Li4wNzBmNDU4MzA3OWY3YjRlZWJmY2Y0YTJhODg4NDc4NmQ4YzU1NDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0x
NjEsNyArMTYxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRB
cmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKICAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgICAgIGlmICghdGVtcEhhc2hNYXAuYWRkKGtleSwgdmFsdWUpLnNlY29uZCkgewor
ICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoa2V5LCB2YWx1ZSkuaXNOZXdFbnRyeSkg
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUgc3BlY2lm
aWVkIGtleSwgYmFpbC4KICAgICAgICAgICAgICAgICBkZWNvZGVyLT5tYXJrSW52YWxpZCgpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDNjMmYxNGNlZDAzZThmMDliZjA1Mzk2ODg5
YjE4NGVmOGI4NWM1OWUuLmY3YzM3MjNmN2VmN2RkMjI5MWVhNTkxNTA2MDA5M2RjMWM0MThiYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApA
QCAtMTAwLDE1ICsxMDAsMTUgQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8Q29ubmVjdGlvbjo6U3lu
Y01lc3NhZ2VTdGF0ZT4gQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6Z2V0T3JDcmVhdGUo
UnVuTG9vcCogcnVuTG9vcCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIoc3luY01lc3NhZ2VT
dGF0ZU1hcE11dGV4KCkpOwotICAgIHBhaXI8U3luY01lc3NhZ2VTdGF0ZU1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5hZGQocnVuTG9vcCwgMCk7Cisg
ICAgU3luY01lc3NhZ2VTdGF0ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bmNNZXNzYWdlU3Rh
dGVNYXAoKS5hZGQocnVuTG9vcCwgMCk7CiAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAg
ICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dC5maXJzdC0+c2Vjb25kOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAgIFJlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBz
eW5jTWVzc2FnZVN0YXRlID0gYWRvcHRSZWYobmV3IFN5bmNNZXNzYWdlU3RhdGUocnVuTG9vcCkp
OwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gc3luY01lc3NhZ2VTdGF0ZS5nZXQoKTsKKyAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHN5bmNNZXNzYWdlU3RhdGUuZ2V0KCk7CiAKICAg
ICByZXR1cm4gc3luY01lc3NhZ2VTdGF0ZS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCAyZjkwNWVjNmExMjQ4NzBkODk3YmEz
NzAwNGJlOGNhZDJmYjJjMTc0Li5hYzY5Yjc2YTNiMjRhZjdlYzE2YWU5NzczNzljNTFhNmUzZGUz
ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAKQEAg
LTM4LDE0ICszOCwxNCBAQCBNdXRhYmxlRGljdGlvbmFyeTo6fk11dGFibGVEaWN0aW9uYXJ5KCkK
IAogYm9vbCBNdXRhYmxlRGljdGlvbmFyeTo6YWRkKGNvbnN0IFN0cmluZyYga2V5LCBBUElPYmpl
Y3QqIGl0ZW0pCiB7Ci0gICAgc3RkOjpwYWlyPE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVtKTsKLSAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKKyAg
ICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgaXRlbSk7CisgICAg
cmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5OwogfQogCiBib29sIE11dGFibGVEaWN0aW9uYXJ5Ojpz
ZXQoY29uc3QgU3RyaW5nJiBrZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8
TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOwot
ICAgIHJldHVybiByZXN1bHQuc2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQg
PSBtX21hcC5zZXQoa2V5LCBpdGVtKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9
CiAKIHZvaWQgTXV0YWJsZURpY3Rpb25hcnk6OnJlbW92ZShjb25zdCBTdHJpbmcmIGtleSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgKaW5kZXggOTY3MmYyOGRmMzdh
YWI5MTFmZGMyODFiZTJjNjgyMDAwNWMyYWJmMS4uYWNlNzJmZDJlMzNlM2JjMTE3ZmMyZmE0NTVm
MTVkODc3N2ZjMDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJz
LmgKQEAgLTI4NSw4ICsyODUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUobWVzc2FnZUNvZGVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgICAgICAgICAgc3RkOjpwYWlyPEltbXV0YWJsZURpY3Rpb25hcnk6Ok1h
cFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxl
YXNlKCkpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKKyAgICAgICAgICAg
ICAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFw
LnNldChrZXksIGVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
aW5kZXggOWNlNTQ0MDdlNTY5ZDUwMzBmODFkYWJhMWVmZGNiOTliZmIwYTBmOS4uZThkZmQ4MTY4
YzdhMjcxMjY0YWNmNWM3MWRkOTAyYzBhNzQ1NWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTI3MSwxOCArMjcxLDE3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwob3JpZ2luYWxVUkwpOwogICAg
IE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBzdGQ6OnBhaXI8V2ViQmFja0ZvcndhcmRM
aXN0SXRlbU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0SXRl
bU1hcC5hZGQoaXRlbUlELCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICAv
LyBOZXcgaXRlbS4KLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJhY2tGb3J3YXJkRGF0
YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CisgICAgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0SXRl
bU1hcC5hZGQoaXRlbUlELCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVh
dGUob3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tG
b3J3YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICAvLyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0
T3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRV
UkwodXJsKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0VGl0bGUodGl0bGUpOwotICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRCYWNrRm9yd2FyZERhdGEoYmFja0ZvcndhcmREYXRh
LmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQtPnNldE9yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKTsKKyAgICByZXN1bHQuaXRlcmF0b3It
PnNlY29uZC0+c2V0VVJMKHVybCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldFRp
dGxlKHRpdGxlKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+c2V0QmFja0ZvcndhcmRE
YXRhKGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCkpOwogfQog
CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggY2ViYmIzMGMxYWYzYjRkOWMxZDIzOWIwOGZiZjRl
NWFlNzZlZjQ2ZS4uN2Q3MzA1ZWRiYzMwY2RlMDkxZmFmY2YzZWM5YzMyMGU1OGM2ZTM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC02Nywx
MiArNjcsMTIgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoTm9kZSoKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgc3RkOjpwYWlyPERPTUhhbmRsZUNhY2hlOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQobm9kZSwgMCk7Ci0gICAgaWYgKCFy
ZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBET01IYW5kbGVDYWNoZTo6QWRk
UmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKG5vZGUsIDApOworICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTo6Y3JlYXRlKG5vZGUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbm9kZUhhbmRs
ZS5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7
CiAgICAgcmV0dXJuIG5vZGVIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IGU5NGVkZmQzNGI4Yjg5ZDM2
ZTlkM2U3ZmRiMGM0N2EwMDUyNWUxMTkuLjFiNzRmMDEyNDAwOGRiM2MwNzgyOGVhNmY2ZDJjMDVh
YzA1OWMzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShSYW4KICAgICBp
ZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVD
YWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJhbmdl
LCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBE
T01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJh
bmdlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCk7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUg
PSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUocmFuZ2UpOwotICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQgPSByYW5nZUhhbmRsZS5nZXQoKTsKICAgICByZXR1cm4gcmFuZ2VIYW5kbGUucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjdlNGM3
MmVhMWY3NGQ1ZTExNTU0NTRiOGEzNWM5Y2FlMzY5YThlYy4uMjZlNTQwNzQ0YmQ1Mjc0YzliNmRh
Y2VlYTViZjk0ZmEzYWUwNDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBtX25vdGlmaWNh
dGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25JRCk7CiAgICAgbV9ub3RpZmlj
YXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7CiAgICAgCi0gICAg
Tm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRl
eHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8
dWludDY0X3Q+KCkpLmZpcnN0OworICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2NF90PigpKS5pdGVyYXRvcjsKICAgICBpdC0+
c2Vjb25kLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAgICAgCiAgICAgbV9wcm9jZXNzLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24t
Pmljb25VUkwoKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT5yZXBsYWNlSWQoKSwgbm90aWZpY2F0
aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCksIG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzFiYTA1MGNmNmRhMWQ3YWExNjE3NjE0MzdmNGM0
OGQ1YWRlMjFkMS4uMmRmY2RlMDgzYjljMTRiMWM0MTEyNjNiNjYyMzAzODlmZTFiZjMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01MTgsMTYgKzUxOCwx
NiBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0
byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3Bl
bigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBi
b3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5
LiAKLSAgICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgMCk7Ci0gICAgaWYg
KHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7
Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gV2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwg
cGFyYW1ldGVycyk7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgMCk7CisgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQp
OworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdl
SUQsIHBhcmFtZXRlcnMpOwogCiAgICAgICAgIC8vIEJhbGFuY2VkIGJ5IGFuIGVuYWJsZVRlcm1p
bmF0aW9uIGluIHJlbW92ZVdlYlBhZ2UuCiAgICAgICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOwog
ICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgQVNTRVJUKHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCkKQEAgLTczOSwxMyArNzM5LDEzIEBAIFdlYlBhZ2VHcm91cFBy
b3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAodWludDY0X3QgcGFnZUdyb3VwSUQpCiAKIFdl
YlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdy
b3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91cERhdGEucGFnZUdyb3VwSUQsIDApOwotICAgIGlm
IChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQp
OwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVh
dGUocGFnZUdyb3VwRGF0YSk7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VH
cm91cFByb3h5PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VH
cm91cERhdGEucGFnZUdyb3VwSUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewor
ICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJQYWdlR3JvdXBQcm94eTo6Y3JlYXRlKHBhZ2VHcm91cERh
dGEpOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29s
IGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAy
ZDIxNmMyMzJhNTA3MzE0NDI4NTZkZGViZDkyNjE0MzE0YzlhMjMuLjdiMTE5OGQ1YTIyY2E2N2Nh
ZTQ2Yzg3YWQwZDQyZTFjNzIyMTNkNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJj
ZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9i
amVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEw
NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZCk6CisKIDIwMTItMDMtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgeGNydW4gdG8gZmluZCBubSBhbmQgcmFubGliIG9uIE9TIFgg
YnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDA1ODM0ODY4NDlkNWM3ZWY1
NTRjNjc3YTZjMjNmNGZjOThiOGQxYjkuLmNlYzQzNDRkZDJjZjM0NTZmN2I1MmQ3N2I5N2QzMGM3
ZWQyNTAwZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01MDQsNyArNTA0LDcg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29y
bGQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHUKICAgICBpZiAoIXdvcmxkSUQpCiAgICAgICAgIHdv
cmxkLmFkb3B0KFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpKTsKICAgICBlbHNlIHsK
LSAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4mIHdvcmxkU2xvdCA9
IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFk
ZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBpZiAoIXdvcmxkU2xvdCkK
ICAgICAgICAgICAgIHdvcmxkU2xvdC5hZG9wdChXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29y
bGQoKSk7CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134435</attachid>
            <date>2012-03-28 16:15:30 -0700</date>
            <delta_ts>2012-03-29 05:52:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120328201528.patch</filename>
            <type>text/plain</type>
            <size>178353</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NGZkYTY3NzRlNDhmOTAzNzEwZTAyZDkyY2NhYzMyZjIyMzc5NTQwLi5jMjg0NTUyMDdkMWZlNTNm
OWNiNmZlNGNiZWEwMmU2NGUzZjg4N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yOCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVp
bGQgZml4IC0gc29tZSBjb21waWxlcyBnZW5lcmF0aW5nIE5PUkVUVVJOIHJlbGF0ZWQgd2Fybmlu
Z3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGQ4MGFiODRkMDc5NTZmMjUyZjkxYThkNDAwYmU4NDk5NGQ5YzkyYTUuLjhmMjA5
NjA0ZjNiNjVhNTM5ZjBiNjcxNjZhYWRlYzU1MjVkYTRlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVp
cmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJu
IGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBIYXNoVGFibGU8Pjo6YWRkKCkgYW5kIGRlcml2YXRlIGZ1
bmN0aW9ucyByZXR1cm4gYW4gQWRkUmVzdWx0IHN0cnVjdCBpbnN0ZWFkCisgICAgICAgIG9mIGEg
cGFpci4gVGhpcyBzdHJ1Y3QgY29udGFpbnMgY29udGFpbnMgJ2l0ZXJhdG9yJyBhbmQgJ2lzTmV3
RW50cnknIG1lbWJlcnMsIHRoYXQgYXJlCisgICAgICAgIG1vcmUgcmVhZGFibGUgYXQgY2FsbHNp
dGVzIHRoYW4gcHJldmlvdXMgJ2ZpcnN0JyBhbmQgJ3NlY29uZCcuCisKKyAgICAgICAgKiB3dGYv
SGFzaENvdW50ZWRTZXQuaDoKKyAgICAgICAgKEhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdU
Rjo6OjphZGQpOgorICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChIYXNoTWFwKToK
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvSGFz
aFNldC5oOgorICAgICAgICAoSGFzaFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAg
ICAgKFdURik6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNo
VGFibGVBZGRSZXN1bHQ6Okhhc2hUYWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChIYXNoVGFibGVB
ZGRSZXN1bHQpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAg
IChXVEY6Okhhc2hUYWJsZTo6YWRkKToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAo
V1RGOjo6OmFkZFBhc3NpbmdIYXNoQ29kZSk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6
CisgICAgICAgIChMaXN0SGFzaFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAg
KFdURjo6OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL1NwZWN0
cnVtLmg6CisgICAgICAgIChXVEY6OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZU
aHJlYWREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllclRhYmxlOjphZGQpOgorICAg
ICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAgIChJZGVudGlmaWVyVGFibGUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRv
U3RyaW5nVGFibGUpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToK
KwogMjAxMi0wMy0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDkyYTU2ZGI4ODM3YTZhZjhiN2JjODUzYTBlMGFjNDllM2EwYjhjMTYuLmY0ZWJkMzE5ODEx
OGY0ZTAzODFkMTcxNWRiNzc0YTFhMjBlNmY0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzkg
QEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xp
dmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0
dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFk
IG9mIGEgcGFpci4gTm8gbmV3IHRlc3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6YWNxdWlyZUxvY2spOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlF1b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Y2FjaGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRP
YmplY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5wQ3JlYXRlVjhTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVy
UmVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAg
ICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6Omdl
dEZvbnREYXRhKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250
RmFjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJp
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
VmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
VmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVl
UG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVh
dGVGb250RmFtaWx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVh
dGVGb250RmFjZVZhbHVlKToKKyAgICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRh
dGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xl
dmVsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndpbmRvd05hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRv
Y3VtZW50TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2Fu
dmFzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudE9yZGVyZWRNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29sbGVjdE1hdGNo
aW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24pOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAqIGRv
bS9TcGFjZVNwbGl0U3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJp
bmdEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xs
ZWN0aW9uOjphcHBlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJm
b3JtU2VhcmNoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJl
YWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPYmplY3Q6OnNldE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPYmplY3Q6OnNldEFycmF5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6YWRkRW50cnkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6
OnBhZ2VHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5r
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgor
ICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBw
YWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1l
bnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9CaW5hcnlQ
cm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxh
bjo6d3JpdGVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBs
YW46OndyaXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBs
YW46OndyaXRlSW50ZWdlckFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyVGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRk
VGlsZUpvYik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNoYW5nZXNGbHVzaGVyOjpmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXNTb29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREZXJpdmVk
Rm9udERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmls
aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQVRTVUkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFUU1VTdHlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmdldENGU3RyaW5nQXR0cmlidXRl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0No
YXJhY3RlclNlcXVlbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250
UGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkU2l6ZUZvbnREYXRhOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0U3R5bGVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6
YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaDoKKyAgICAg
ICAgKEhUVFBIZWFkZXJNYXApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjph
ZGRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKToKKyAgICAg
ICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0
aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGREZXBlbmRl
bmN5T25GbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3Vy
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VNYXA6OnNldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6
aW1wb3J0SXRlbSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJj
ZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwpOgorICAgICAgICAqIHht
bC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuSWQ6OmV2
YWx1YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhQYXRoOjpMb2NhdGlvblBhdGg6OmV2YWx1YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhQcmVk
aWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlVuaW9uOjpldmFsdWF0ZSk6CisK
IDIwMTItMDMtMjggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgog
CiAgICAgICAgIFlhcnI6IGlmIHdlJ3JlIG5vdCB1c2luZyB0aGUgb3V0cHV0IGFycmF5LCBkb24n
dCBwb3B1bGF0ZSBpdCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNGVkY2MzMGRhNzQ1
YmZlY2E0NjA1NjcyZGZjNDBlNzc4MmYwYjRmZC4uNmRkMDEwNWJjZGUxZDgzMWI1MmU0OTQ4NzQ0
OWE0ZDU3ZjM1YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2
ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1
cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQg
b2YgYSBwYWlyLgorCisgICAgICAgICogc3JjL1dlYkhUVFBMb2FkSW5mby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmFkZEhlYWRlcik6CisgICAgICAgICogc3JjL1dlYlVSTFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisK
IDIwMTItMDMtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTI0MzIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
aW5kZXggNmIwYzVlYjBmOWQxYTA0NzdlYmNkZTJhN2ZmM2RlOTAwZGMxZmZmYy4uMzRlNTY0MmYz
NDM3ZWM2MWIyMjMyZDNkYzc3Y2FmOTQ2NzZjYzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTAzLTI4ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxj
YWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hv
dWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQg
aW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBXZWJLaXRDT01BUEkuY3BwOgorICAgICAg
ICAoY2xhc3NGYWN0b3J5KToKKwogMjAxMi0wMy0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZyYW1lTG9hZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24gdXNl
cyBGcmFtZSBmb3IgY29udGV4dCByYXRoZXIgdGhhbiBEb2N1bWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNm
Mjg0MmY4YTJhZmI4Yjc5YWIwYTA0M2I0ZTdhY2YyZTI4ZTUxYWMuLjU0ZjNlYmZjYzZkYTA2Nzg4
YTU2YWQ0MmE0YjA3YjlmZjRlN2U0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAx
Mi0wMy0yOCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBt
b3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBw
YWlyLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICog
U2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TXV0YWJsZURp
Y3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok11dGFibGVEaWN0aW9uYXJ5OjpzZXQp
OgorICAgICAgICAqIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVzc2FnZURlY29kZXI6OmJhc2VEZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFk
ZEJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJQYWdl
R3JvdXApOgorCiAyMDEyLTAzLTI4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFzc2l2ZSBsYWcgb3BlbmluZyBhIGxpbmsgaW4gYSBuZXcgYmFja2dy
b3VuZCB0YWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgK
aW5kZXggNjEzZTUzOGJjNzVkYjM2OWY3ZGZmN2I2Nzk4OTJjYjcwMmIzMjEzNi4uOWFjYTBjN2Ux
OGNhNWNjY2NlZTczNTllYTM5MWMyODM0YjBhMWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IEpTQ2Fs
bGJhY2tPYmplY3REYXRhIDogV2Vha0hhbmRsZU93bmVyIHsKICAgICAgICAgdm9pZCBzZXRQcml2
YXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBlbXB0eTsKLSAgICAgICAgICAgIG1fcHJv
cGVydHlNYXAuYWRkKHByb3BlcnR5TmFtZS5pbXBsKCksIGVtcHR5KS5maXJzdC0+c2Vjb25kLnNl
dChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAgICAgICAgICAgbV9wcm9wZXJ0eU1hcC5h
ZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGdsb2Jh
bERhdGEsIG93bmVyLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQg
ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmluZGV4IDVjMjQ5YWJhZjY1ZWJi
YTg5MmY5ZjUzMDMzNGM1ZGJjMGQ5NWI5OWQuLjEzNTM0ZDA3OGM2YjliODc4MWYwOTk2YTZiYjk4
OGIzN2Y0ZGJkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFz
c1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFz
c0NvbnRleHREYXRhKEpTQzo6SlNHbG9iYWxEYXRhJiwgT3BhcXVlSlNDCiAKIE9wYXF1ZUpTQ2xh
c3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIE93blB0cjxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9
IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFxdWVKU0NsYXNzRGF0YS5hZGQodGhpcywgbnVsbHB0ciku
Zmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29u
dGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMs
IG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKICAgICAg
ICAgY29udGV4dERhdGEgPSBhZG9wdFB0cihuZXcgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcykpOwogICAgIHJldHVybiAqY29udGV4dERhdGE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDRhNmY0NjUzZWFiODkyZmM2ZGEwZGI5M2NiNDljYjE1NzFhNmFkZmIu
LjBmMDg1Nzk1MzM2NDA0YzVhMDRmYTFlN2JjZGMxNmEwMjdlMWYxZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC0yMDAsMTAgKzIwMCwxMCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXNDb25zdGFudCwgUmVnaXN0ZQogewogICAg
IGludCBpbmRleCA9IG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUoKTsKICAgICBTeW1ib2xUYWJsZUVu
dHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkgOiAwKTsKLSAgICBwYWly
PFN5bWJvbFRhYmxlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQo
aWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1
bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKIAotICAgIGlm
ICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuZmly
c3QtPnNlY29uZC5nZXRJbmRleCgpKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgIHIwID0gJnJlZ2lzdGVyRm9yKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldEluZGV4
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMTUsOSArMjE1LDkgQEAg
aW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9iYWxWYXIoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGJvb2wgaXNDb25zdGFudCkKIHsKICAgICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNp
emUoKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8g
UmVhZE9ubHkgOiAwKTsKLSAgICBwYWlyPFN5bWJvbFRhYmxlOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7Ci0gICAgaWYg
KCFyZXN1bHQuc2Vjb25kKQotICAgICAgICBpbmRleCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdl
dEluZGV4KCk7CisgICAgU3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJs
ZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldEluZGV4KCk7
CiAgICAgcmV0dXJuIGluZGV4OwogfQogCkBAIC05NjgsMjQgKzk2OCwyNCBAQCBQYXNzUmVmUHRy
PExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVn
aXN0ZXJJRCogY29uZAogdW5zaWduZWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFN0cmluZ0ltcGwqIHJlcCA9IGlkZW50Lmlt
cGwoKTsKLSAgICBwYWlyPElkZW50aWZpZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
X2lkZW50aWZpZXJNYXAuYWRkKHJlcCwgbV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMo
KSk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIC8vIG5ldyBlbnRyeQorICAgIElkZW50aWZpZXJN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2lkZW50aWZpZXJNYXAuYWRkKHJlcCwgbV9jb2RlQmxv
Y2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICBtX2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJZGVudGlmaWVyKG1fZ2xvYmFsRGF0
YSwgcmVwKSk7CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVlIHYpCiB7CiAgICAgaW50IGluZGV4ID0gbV9u
ZXh0Q29uc3RhbnRPZmZzZXQ7CiAKLSAgICBwYWlyPEpTVmFsdWVNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2KSwgbV9uZXh0Q29u
c3RhbnRPZmZzZXQpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgSlNWYWx1ZU1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHYpLCBt
X25leHRDb25zdGFudE9mZnNldCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAg
ICAgIG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzLmFwcGVuZChGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCArIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKICAgICAgICAgKyttX25leHRDb25zdGFudE9m
ZnNldDsKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KEpTVmFsdWUodikpOwogICAg
IH0gZWxzZQotICAgICAgICBpbmRleCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBp
bmRleCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgcmV0dXJuICZtX2NvbnN0YW50
UG9vbFJlZ2lzdGVyc1tpbmRleF07CiB9CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3VibGUgbnVt
YmVyKQogICAgIC8vIHdvcmsgY29ycmVjdGx5IHdpdGggTmFOIGFzIGEga2V5LgogICAgIGlmIChp
c25hbihudW1iZXIpIHx8IG51bWJlciA9PSBIYXNoVHJhaXRzPGRvdWJsZT46OmVtcHR5VmFsdWUo
KSB8fCBIYXNoVHJhaXRzPGRvdWJsZT46OmlzRGVsZXRlZFZhbHVlKG51bWJlcikpCiAgICAgICAg
IHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKG51bWJlcikpOwotICAgIEpTVmFsdWUmIHZh
bHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVlKCkpLmZpcnN0LT5zZWNv
bmQ7CisgICAgSlNWYWx1ZSYgdmFsdWVJbk1hcCA9IG1fbnVtYmVyTWFwLmFkZChudW1iZXIsIEpT
VmFsdWUoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVlSW5NYXApCiAgICAgICAg
IHZhbHVlSW5NYXAgPSBqc051bWJlcihudW1iZXIpOwogICAgIHJldHVybiBlbWl0TG9hZChkc3Qs
IHZhbHVlSW5NYXApOwpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikKIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBKU1N0cmluZyomIHN0cmluZ0luTWFw
ID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5maXJzdC0+c2Vjb25kOwor
ICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5p
bXBsKCksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFzdHJpbmdJbk1hcCkKICAgICAg
ICAgc3RyaW5nSW5NYXAgPSBqc093bmVkU3RyaW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci51
c3RyaW5nKCkpOwogICAgIHJldHVybiBlbWl0TG9hZChkc3QsIEpTVmFsdWUoc3RyaW5nSW5NYXAp
KTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRD
b25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCiAKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVy
YXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsK
LSAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIu
aW1wbCgpLCAwKS5maXJzdC0+c2Vjb25kOworICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBt
X3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFzdHJpbmdJbk1hcCkgewogICAgICAgICBzdHJpbmdJbk1hcCA9IGpzU3RyaW5nKGds
b2JhbERhdGEoKSwgaWRlbnRpZmllci51c3RyaW5nKCkpOwogICAgICAgICBhZGRDb25zdGFudFZh
bHVlKHN0cmluZ0luTWFwKTsKQEAgLTE3MTgsMTAgKzE3MTgsMTAgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9u
Qm9keU5vZGUKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMYXp5TmV3RnVu
Y3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbikKIHsKLSAg
ICBzdGQ6OnBhaXI8RnVuY3Rpb25PZmZzZXRNYXA6Oml0ZXJhdG9yLCBib29sPiBwdHIgPSBtX2Z1
bmN0aW9uT2Zmc2V0cy5hZGQoZnVuY3Rpb24sIDApOwotICAgIGlmIChwdHIuc2Vjb25kKQotICAg
ICAgICBwdHIuZmlyc3QtPnNlY29uZCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFr
ZUZ1bmN0aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24pKTsKLSAgICByZXR1cm4gZW1pdE5ld0Z1
bmN0aW9uSW50ZXJuYWwoZHN0LCBwdHIuZmlyc3QtPnNlY29uZCwgdHJ1ZSk7CisgICAgRnVuY3Rp
b25PZmZzZXRNYXA6OkFkZFJlc3VsdCBwdHIgPSBtX2Z1bmN0aW9uT2Zmc2V0cy5hZGQoZnVuY3Rp
b24sIDApOworICAgIGlmIChwdHIuaXNOZXdFbnRyeSkKKyAgICAgICAgcHRyLml0ZXJhdG9yLT5z
ZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihtX2dsb2Jh
bERhdGEsIGZ1bmN0aW9uKSk7CisgICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRz
dCwgcHRyLml0ZXJhdG9yLT5zZWNvbmQsIHRydWUpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNp
Z25lZCBpbmRleCwgYm9vbCBkb051bGxDaGVjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBiYjk1Y2FmYjY4MjYzYTli
ZjUxMGFhNGU0MjI3ZjVlYTQzYTNlZTk4Li5jZDlkZTIyZjA1OTg3OThlMjdiMjc3MWI5Yjg3ZTQ1
MTM2YTk3OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNTYsOSArMjU2LDkgQEAgUmVnaXN0ZXJJRCogUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgR2V0dGVyU2V0
dGVyUGFpciBwYWlyKG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZSo+KDApKTsKLSAgICAg
ICAgICAgIHN0ZDo6cGFpcjxHZXR0ZXJTZXR0ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBtYXAuYWRkKG5vZGUtPm5hbWUoKS5pbXBsKCksIHBhaXIpOwotICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnNlY29u
ZCA9IG5vZGU7CisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBtYXAuYWRkKG5vZGUtPm5hbWUoKS5pbXBsKCksIHBhaXIpOworICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC5zZWNvbmQgPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRo
ZSByZW1haW5pbmcgcHJvcGVydGllcyBpbiB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IDQ0MWM5YWVkMzMxYzhiM2ViOGQ3NjIzNDBj
YmE5MzUzNGRjNTM0ZWEuLmVkZThhOWJhMjQ4YjlhODk0Yjc5MTc0ZWQ1ZDMyMGY4OGY1Y2NiM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNzUs
NyArNzUsNyBAQCBpbmxpbmUgdm9pZCBSZWNvbXBpbGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2Vs
bCkKIAogICAgIC8vIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBzZXQg
LSBpZiBzbywKICAgICAvLyB3ZSd2ZSBhbHJlYWR5IHJldHJhbnNsYXRlZCBpdCwgbm90aGluZyB0
byBkbyBoZXJlLgotICAgIGlmICghbV9mdW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxl
KS5zZWNvbmQpCisgICAgaWYgKCFtX2Z1bmN0aW9uRXhlY3V0YWJsZXMuYWRkKGV4ZWN1dGFibGUp
LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZ1
bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVj
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5j
cHAKaW5kZXggOTY5MTAxZTg3YzUzOGM5NWQxN2QxNjUxYWUyYWM1ZDZkMzZiMjU5ZC4uYWMyYzNk
YjIxY2Y3NGExYTRkNjRiNDY4OWZmMTZmZWZlN2JkMWViMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWJseUhlbHBlcnM6OmRlY29k
ZWRDb2RlTWFwRm9yKENvZGVCbG9jayoKICAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdENv
ZGVNYXAoKSk7CiAgICAgCi0gICAgc3RkOjpwYWlyPEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9y
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1f
ZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ssIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+KCkpOworICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldD4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChj
b2RlQmxvY2ssIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+KCkpOwogICAgIAotICAg
IGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVj
b2RlKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQpOwogICAgIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1
cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxB
R1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IDkyODUwNTYzYWVkNTExNTM5N2NhYzhhNDIyNzU4YjA3NGI4NmE0YTMuLmYwZGE2Y2Mw
MWI3MGU4NzliYjkwOTc4YzhiYTg3MDZmYWQ4NjhkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NTEsMTEgKzU1MSwxMSBAQCBw
cml2YXRlOgogICAgIAogICAgIE5vZGVJbmRleCBjZWxsQ29uc3RhbnQoSlNDZWxsKiBjZWxsKQog
ICAgIHsKLSAgICAgICAgcGFpcjxIYXNoTWFwPEpTQ2VsbCosIE5vZGVJbmRleD46Oml0ZXJhdG9y
LCBib29sPiBpdGVyID0gbV9jZWxsQ29uc3RhbnROb2Rlcy5hZGQoY2VsbCwgTm9Ob2RlKTsKLSAg
ICAgICAgaWYgKGl0ZXIuc2Vjb25kKQotICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0g
YWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJbmZvKGNlbGwpKTsKKyAgICAgICAgSGFzaE1h
cDxKU0NlbGwqLCBOb2RlSW5kZXg+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jZWxsQ29uc3RhbnRO
b2Rlcy5hZGQoY2VsbCwgTm9Ob2RlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZGRUb0dyYXBoKFdlYWtKU0Nv
bnN0YW50LCBPcEluZm8oY2VsbCkpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGl0ZXIuZmly
c3QtPnNlY29uZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAg
IH0KICAgICAKICAgICBDb2RlT3JpZ2luIGN1cnJlbnRDb2RlT3JpZ2luKCkKQEAgLTI1OTUsMTAg
KzI1OTUsMTAgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5dGVDb2RlUGFyc2UKIAogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyArK2kpIHsKICAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihpKS5pbXBs
KCk7Ci0gICAgICAgICAgICBwYWlyPElkZW50aWZpZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIGJ5dGVDb2RlUGFy
c2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKLSAgICAgICAgICAgIGlm
IChyZXN1bHQuc2Vjb25kKQorICAgICAgICAgICAgSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2lkZW50aWZpZXJNYXAuYWRkKHJlcCwgYnl0ZUNvZGVQ
YXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOworICAgICAgICAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5t
X2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJZGVudGlmaWVyKGJ5dGVDb2RlUGFyc2VyLT5tX2ds
b2JhbERhdGEsIHJlcCkpOwotICAgICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSByZXN1
bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKTsgKytpKSB7CiAg
ICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLT5nZXRDb25zdGFudChpICsgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwpAQCAtMjYxMSwxMiArMjYxMSwxMiBAQCBCeXRlQ29k
ZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeShCeXRlQ29kZVBhcnNl
ciogYnl0ZUNvZGVQYXJzZQogICAgICAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IGJ5
dGVDb2RlUGFyc2VyLT5tX2VtcHR5SlNWYWx1ZUluZGV4OwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1
ZTo6ZW5jb2RlKHZhbHVlKSwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZkNv
bnN0YW50UmVnaXN0ZXJzKCkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAg
ICAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgICAgICAgICAgSlNWYWx1ZU1hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFu
dFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOworICAgICAgICAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXIt
Pm1fY29kZUJsb2NrLT5hZGRDb25zdGFudCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnl0ZUNv
ZGVQYXJzZXItPm1fY29uc3RhbnRzLmFwcGVuZChDb25zdGFudFJlY29yZCgpKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5maXJzdC0+c2Vj
b25kOworICAgICAgICAgICAgbV9jb25zdGFudFJlbWFwW2ldID0gcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fY2FsbHNpdGVCbG9ja0hlYWRO
ZWVkc0xpbmtpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApp
bmRleCA5YWUzMmM0YjBkZTJiNjllMzMxYTU4YWRmYzQwZTQxNTFjYTJmYTkwLi44MmY2ZGY3ZDEy
YThlZjI3NDQwNTUxNmRlNjZjNTUzNjM4YjRmZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcApAQCAtMzU1OCwyNCArMzU1OCwyNCBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgdG9fb2JqZWN0KQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklU
VGh1bmtzOjpjdGlTdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0b3Ig
Z2VuZXJhdG9yKQogewotICAgIHN0ZDo6cGFpcjxDVElTdHViTWFwOjppdGVyYXRvciwgYm9vbD4g
ZW50cnkgPSBtX2N0aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
KCkpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQg
PSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7
CisgICAgQ1RJU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9jdGlTdHViTWFwLmFkZChnZW5l
cmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpKTsKKyAgICBpZiAoZW50cnkuaXNOZXdFbnRy
eSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IGdlbmVyYXRvcihnbG9iYWxEYXRh
KTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogTmF0aXZlRXhlY3V0
YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQog
ewotICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2
ZUV4ZWN1dGFibGU+KCkpOwotICAgIGlmICghcmVzdWx0LmZpcnN0LT5zZWNvbmQpCi0gICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2Jh
bERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxl
Q1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3Qo
KSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykpOwotICAgIHJldHVybiByZXN1bHQuZmlyc3Qt
PnNlY29uZC5nZXQoKTsKKyAgICBIb3N0RnVuY3Rpb25TdHViTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+KCkpOworICAgIGlmICghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpCisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmds
b2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21w
aWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1
Y3QoKSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykpOworICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZC5nZXQoKTsKIH0KIAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpo
b3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvciwgSW50cmluc2ljIGludHJpbnNpYykK
IHsKLSAgICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVu
dHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2
ZUV4ZWN1dGFibGU+KCkpOwotICAgIGlmICghKmVudHJ5LmZpcnN0LT5zZWNvbmQpIHsKKyAgICBI
b3N0RnVuY3Rpb25TdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJN
YXAtPmFkZChmdW5jdGlvbiwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7CisgICAgaWYg
KCEqZW50cnkuaXRlcmF0b3ItPnNlY29uZCkgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgY29kZTsKICAgICAgICAgaWYgKGdlbmVyYXRvcikgewogICAgICAgICAgICAgaWYgKGdsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMzU4NCw5ICszNTg0LDkgQEAgTmF0aXZlRXhlY3V0YWJs
ZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
TmF0aXZlRnUKICAgICAgICAgICAgICAgICBjb2RlID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29kZSA9IEpJVDo6Y29tcGlsZUNUSU5hdGl2
ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pOwotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25k
ID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFi
bGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNpYykpOworICAgICAgICBlbnRyeS5p
dGVyYXRvci0+c2Vjb25kID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEs
IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNv
bnN0cnVjdCgpKSwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNpYykpOwog
ICAgIH0KLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICByZXR1cm4g
ZW50cnkuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIH0KIAogdm9pZCBKSVRUaHVua3M6OmNsZWFy
SG9zdEZ1bmN0aW9uU3R1YnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CmluZGV4IGY1ODg0N2ZkMjQ2NzhmMmYyNTJjMzUxYjVkOGQzYmU5ZTUzNWFiNzIuLjY5NDM5Nzdh
ODVhNmZmN2M5MTFhNzJhNGM4MzliNjljMWQ3NDM4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzMjMsMTIgKzEzMjMsMTIgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJp
Y3RPYmplY3QKICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQp
OwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAgIGlmICghbV9zeW50YXhB
bHJlYWR5VmFsaWRhdGVkKSB7Ci0gICAgICAgICAgICBzdGQ6OnBhaXI8T2JqZWN0VmFsaWRhdGlv
bk1hcDo6aXRlcmF0b3IsIGJvb2w+IHByb3BlcnR5RW50cnlJdGVyID0gb2JqZWN0VmFsaWRhdG9y
LmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHBy
b3BlcnR5KSk7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5RW50cnlJdGVyLnNlY29uZCkgewot
ICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocHJvcGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNlY29u
ZCA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAgICAgICAgIE9iamVjdFZhbGlkYXRp
b25NYXA6OkFkZFJlc3VsdCBwcm9wZXJ0eUVudHJ5ID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250
ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7
CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5RW50cnkuaXNOZXdFbnRyeSkgeworICAgICAgICAg
ICAgICAgIGZhaWxJZlRydWUocHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kID09IFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQpOwogICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoY29udGV4dC5n
ZXRUeXBlKHByb3BlcnR5KSA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKLSAgICAgICAgICAg
ICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgJiBwcm9wZXJ0eUVudHJ5
SXRlci5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eUVudHJ5SXRlci5m
aXJzdC0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CisgICAgICAgICAgICAg
ICAgZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeS5p
dGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9y
LT5zZWNvbmQgfD0gY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggNzUxM2QxZjExZmQ0ODk1ODI4YWY4Y2FlYmU4MGFkYTE1YjVm
NTdmOS4uNjhhNjkzYTNlOWVkZTJhOTc4ZTdmODE1NjQxM2RiMzhlY2FjYTk1MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RydWN0IFNj
b3BlIHsKICAgICBib29sIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQp
CiAgICAgewogICAgICAgICBib29sIGlzQXJndW1lbnRzID0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0
eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50OwotICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RN
b2RlID0gbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpLnNl
Y29uZCAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFp
c0FyZ3VtZW50czsKKyAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFyZWRW
YXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5pc05ld0VudHJ5ICYmIG1fZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOwog
ICAgICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0gbV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBpc1Zh
bGlkU3RyaWN0TW9kZTsKICAgICAgICAgaWYgKGlzQXJndW1lbnRzKQogICAgICAgICAgICAgc2V0
RmxhZ3MoU2hhZG93c0FyZ3VtZW50c0ZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmNwcAppbmRleCBmYmM1Nzg3Y2U2NTcyYThkODRkN2MwNGJmODIzMTdm
NTg0ODA2YjYzLi4xODJiY2M0NjIwMjJiNGVjMmNiYWM2ODU1YzUwMjlmNjRjNzExZmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDEx
ICsxMTAsMTEgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBjaGFyKiBjKQogICAgIGlmIChpdGVyICE9IGxpdGVy
YWxJZGVudGlmaWVyVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAK
LSAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0
ID0gaWRlbnRpZmllclRhYmxlLmFkZDxjb25zdCBMQ2hhciosIElkZW50aWZpZXJDU3RyaW5nVHJh
bnNsYXRvcj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGMpKTsKKyAgICBIYXNoU2V0
PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGlkZW50aWZpZXJUYWJsZS5hZGQ8
Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihjKSk7CiAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRy
YW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBp
biB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiBhZGRlZFN0cmluZyA9IGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZp
cnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZGVkU3Ry
aW5nID0gYWRkUmVzdWx0LmlzTmV3RW50cnkgPyBhZG9wdFJlZigqYWRkUmVzdWx0Lml0ZXJhdG9y
KSA6ICphZGRSZXN1bHQuaXRlcmF0b3I7CiAKICAgICBsaXRlcmFsSWRlbnRpZmllclRhYmxlLmFk
ZChjLCBhZGRlZFN0cmluZy5nZXQoKSk7CiAKQEAgLTEzOCwxMSArMTM4LDExIEBAIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVDaGFyKiBzCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBTdHJpbmdJ
bXBsOjplbXB0eSgpOwogICAgIENoYXJCdWZmZXI8VUNoYXI+IGJ1ZiA9IHtzLCBsZW5ndGh9OyAK
LSAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0
ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hhckJ1ZmZlcjxVQ2hhcj4sIElk
ZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3IgPihidWYpOworICAgIEhhc2hTZXQ8U3Ry
aW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRh
YmxlLT5hZGQ8Q2hhckJ1ZmZlcjxVQ2hhcj4sIElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5z
bGF0b3IgPihidWYpOwogICAgIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNs
YXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRo
ZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNv
bmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAg
cmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRv
cikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+CkBAIC0yMTAsNyArMjEwLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0cmluZ0kKICAgICAgICAg
ICAgICAgICByZXR1cm4gcjsKICAgICB9CiAKLSAgICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50
aWZpZXJUYWJsZS0+YWRkKHIpLmZpcnN0OworICAgIHJldHVybiAqZ2xvYmFsRGF0YS0+aWRlbnRp
ZmllclRhYmxlLT5hZGQocikuaXRlcmF0b3I7CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
SWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGI5ZTVhMTg1
NDQ5MjM5Nzg3NDYwMjkyYTIyZWFiMzUyYmY3YjhlMjIuLjE0OTYwODc2YjZmNThkODY3YjlhNWUz
ODI3NWNlZDA2YzJhY2U2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKQEAgLTE3OCwxMSArMTc4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogICAg
ICAgICBDaGFyQnVmZmVyPFQ+IGJ1ZiA9IHtzLCBsZW5ndGh9OyAKLSAgICAgICAgcGFpcjxIYXNo
U2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEt
PmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VD4sIElkZW50aWZpZXJDaGFyQnVmZmVy
VHJhbnNsYXRvcjxUPiA+KGJ1Zik7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRS
ZXN1bHQgYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hhckJ1
ZmZlcjxUPiwgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yPFQ+ID4oYnVmKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3
ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0
ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgICAgICByZXR1cm4gYWRkUmVzdWx0LnNlY29uZCA/
IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5maXJzdDsKKyAgICAgICAg
cmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRv
cikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogICAgIH0KIAogICAgIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYgYikKQEAgLTI0Niwx
MCArMjQ2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
U3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFN0
cmluZ0ltcGw+ID4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIHN0ZDo6cGFpcjxI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRk
KFUgdmFsdWUpCisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBJZGVudGlmaWVy
VGFibGU6OmFkZChVIHZhbHVlKQogICAgIHsKLSAgICAgICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3Ry
aW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV90YWJsZS5hZGQ8VSwgVj4odmFs
dWUpOwotICAgICAgICAoKnJlc3VsdC5maXJzdCktPnNldElzSWRlbnRpZmllcih0cnVlKTsKKyAg
ICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFk
ZDxVLCBWPih2YWx1ZSk7CisgICAgICAgICgqcmVzdWx0Lml0ZXJhdG9yKS0+c2V0SXNJZGVudGlm
aWVyKHRydWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAyYzYyMGI0YWU1ODlkMWVjOWU2ZjQ3
NjkyZTQ0NmNmYTg1NjNkNDAxLi4wZmZhMDc2Y2VhZjA5NjA0ZmFiYWJjMGY2OTU3YzE1NmYxZjFh
ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTk1
LDEwICsxOTUsMTAgQEAgdm9pZCBKU0FycmF5OjpmaW5hbGl6ZShKU0NlbGwqIGNlbGwpCiAgICAg
dGhpc09iamVjdC0+ZGVhbGxvY2F0ZVNwYXJzZU1hcCgpOwogfQogCi1pbmxpbmUgc3RkOjpwYWly
PFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiBTcGFyc2VBcnJheVZhbHVlTWFw
OjphZGQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkpCitpbmxpbmUgU3BhcnNlQXJyYXlWYWx1
ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5VmFsdWVNYXA6OmFkZChKU0FycmF5KiBhcnJheSwg
dW5zaWduZWQgaSkKIHsKICAgICBTcGFyc2VBcnJheUVudHJ5IGVudHJ5OwotICAgIHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAuYWRkKGksIGVudHJ5KTsKKyAgICBBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGksIGVudHJ5KTsKICAgICBzaXplX3QgY2FwYWNpdHkg
PSBtX21hcC5jYXBhY2l0eSgpOwogICAgIGlmIChjYXBhY2l0eSAhPSBtX3JlcG9ydGVkQ2FwYWNp
dHkpIHsKICAgICAgICAgSGVhcDo6aGVhcChhcnJheSktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCgo
Y2FwYWNpdHkgLSBtX3JlcG9ydGVkQ2FwYWNpdHkpICogKHNpemVvZih1bnNpZ25lZCkgKyBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpOwpAQCAtMjA5LDE0ICsyMDksMTQgQEAgaW5saW5l
IHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6YWRkKEoKIAogaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0
KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBhZGQoYXJyYXksIGkpOwotICAgIFNwYXJzZUFy
cmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgQWRkUmVzdWx0IHJl
c3VsdCA9IGFkZChhcnJheSwgaSk7CisgICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYg
YWRkLCB3ZSBmaXJzdCBhbHdheXMgYWRkIHRvIHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRo
ZSB1bmNvbW1vbiBjYXNlIHRoYXQgdGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJh
eSBpcyBub3QKICAgICAvLyBleHRlbnNpYmxlLCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcg
dG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWluLgotICAgIGlmIChyZXN1bHQuc2Vjb25kICYm
ICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKLSAgICAgICAgcmVtb3ZlKHJlc3VsdC5maXJzdCk7
CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsK
KyAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTI1MiwxNCArMjUyLDE0IEBA
IGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpT
QXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpCiAKIGlubGluZSBib29sIFNwYXJzZUFycmF5VmFsdWVN
YXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBp
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFy
c2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsK
LSAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRyeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAg
IEFkZFJlc3VsdCByZXN1bHQgPSBhZGQoYXJyYXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkm
IGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICAvLyBUbyBzYXZlIGEgc2Vw
YXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4K
ICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHks
IGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhl
IHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVz
dWx0LnNlY29uZCAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAgIHJlbW92ZShy
ZXN1bHQuZmlyc3QpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0
ZW5zaWJsZSgpKSB7CisgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBy
ZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJv
cGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIik7CiAgICAgfQogCkBAIC0z
NTUsNyArMzU1LDcgQEAgdm9pZCBKU0FycmF5OjplbnRlckRpY3Rpb25hcnlNb2RlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgLy8gVGhpcyB3aWxsIGFsd2F5cyBiZSBhIG5ldyBl
bnRyeSBpbiB0aGUgbWFwLCBzbyBubyBuZWVkIHRvIGNoZWNrIHdlIGNhbiB3cml0ZSwKICAgICAg
ICAgLy8gYW5kIGF0dHJpYnV0ZXMgYXJlIGRlZmF1bHQgc28gbm8gbmVlZCB0byBzZXQgdGhlbS4K
ICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgbWFwLT5hZGQodGhpcywgaSkuZmlyc3Qt
PnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAgbWFwLT5h
ZGQodGhpcywgaSkuaXRlcmF0b3ItPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUp
OwogICAgIH0KIAogICAgIHZvaWQqIG5ld1Jhd1N0b3JhZ2UgPSAwOwpAQCAtNDMwLDE1ICs0MzAs
MTUgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25OdW1lcmljUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHkKICAgICBBU1NFUlQobWFwKTsKIAogICAgIC8v
IDEuIExldCBjdXJyZW50IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9w
ZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggcHJvcGVydHkgbmFtZSBQLgotICAgIHN0
ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFw
LT5hZGQodGhpcywgaW5kZXgpOwotICAgIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYXAgPSAm
cmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1hcC0+YWRkKHRoaXMsIGluZGV4KTsKKyAgICBTcGFyc2VBcnJheUVudHJ5KiBl
bnRyeUluTWFwID0gJnJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gMi4gTGV0IGV4
dGVuc2libGUgYmUgdGhlIHZhbHVlIG9mIHRoZSBbW0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9w
ZXJ0eSBvZiBPLgogICAgIC8vIDMuIElmIGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRlbnNp
YmxlIGlzIGZhbHNlLCB0aGVuIFJlamVjdC4KICAgICAvLyA0LiBJZiBjdXJyZW50IGlzIHVuZGVm
aW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0cnVlLCB0aGVuCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQp
IHsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgaWYgKCFpc0V4dGVuc2li
bGUoKSkgewotICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0LmZpcnN0KTsKKyAgICAgICAg
ICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgICAgICByZXR1cm4gcmVq
ZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkg
b24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIik7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGFkOThkNjYxOTBiMDNjYTU1Yzg0
YTAyOGM0ODkzMDJiNTFiMThiOWIuLjg5MGZkZjRmMGEwOTQ0ZTU4NGI2NmYxZjY0ZTM1ODEzYzk3
MjQzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTU1LDYg
KzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIE1h
cDo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgTWFwOjpjb25zdF9pdGVyYXRv
ciBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBNYXA6OkFkZFJlc3VsdCBBZGRSZXN1
bHQ7CiAKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCgpCiAgICAgICAgICAgICA6IG1fZmxh
Z3MoTm9ybWFsKQpAQCAtODcsNyArODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8g
VGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBjb250ZW50cyBvZiB0aGUgbWFwCiAgICAgICAg
IHZvaWQgcHV0KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7CiAgICAgICAgIGJvb2wgcHV0RGlyZWN0KEV4ZWNTdGF0ZSosIEpTQXJyYXkq
LCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4gYWRkKEpTQXJyYXkqLCB1bnNpZ25lZCk7CisgICAgICAgIEFkZFJl
c3VsdCBhZGQoSlNBcnJheSosIHVuc2lnbmVkKTsKICAgICAgICAgaXRlcmF0b3IgZmluZCh1bnNp
Z25lZCBpKSB7IHJldHVybiBtX21hcC5maW5kKGkpOyB9CiAgICAgICAgIC8vIFRoaXMgc2hvdWxk
IEFTU0VSVCB0aGUgcmVtb3ZlIGlzIHZhbGlkIChjaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBmaW5k
KS4KICAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IgaXQpIHsgbV9tYXAucmVtb3ZlKGl0KTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuY3BwCmluZGV4IDhlZmI0MDY1ZTE3MzljZjA1ZDVkOTE2NmM3NWJlY2Q4MGRkZTMwZmMuLjli
YWU5NDA5NzQwMDg1MmFjYTBjMDNmNGI3OWU0MjViYjRjMzMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkKFN0cmluZ0ltcGwqIGlkZW50aWZp
ZXIpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAg
ICAgICAgICAgICBtX3NldC5hZGQobV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKVtpXS5pbXBs
KCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghbV9zZXQuYWRkKGlkZW50aWZpZXIpLnNlY29u
ZCkKKyAgICAgICAgaWYgKCFtX3NldC5hZGQoaWRlbnRpZmllcikuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaAppbmRleCBlMzQwOGIwOGJiMjZhYzk0
OGY3N2M3NWYyYTM4MTQxNzA4NjdkNDQxLi4xMjdkMDI4ZTBmNTQyZjI5YjlhODBjYWE4YjcxMWYy
NjZiNDlhNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCkBAIC00OCw3ICs0OCw3IEBAIGlubGluZSBKU1ZhbHVl
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjaygpCiAgICAgaW50IHNpemUgPSBt
X2V4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLnNp
emUoKTsKICAgICBpZiAoc2l6ZSA+PSBNYXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCAmJiBzaXpl
ID49IG1fZXhlYy0+Z2xvYmFsRGF0YSgpLm1heFJlZW50cnlEZXB0aCkKICAgICAgICAgcmV0dXJu
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKCk7Ci0gICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFt
X2V4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFk
ZChtX3RoaXNPYmplY3QpLnNlY29uZDsKKyAgICBib29sIGFscmVhZHlWaXNpdGVkID0gIW1fZXhl
Yy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHMuYWRkKG1f
dGhpc09iamVjdCkuaXNOZXdFbnRyeTsKICAgICBpZiAoYWxyZWFkeVZpc2l0ZWQpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBSZXR1cm4gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIGlu
ZmluaXRlIHJlY3Vyc2lvbi4KICAgICByZXR1cm4gSlNWYWx1ZSgpOyAvLyBJbmRpY2F0ZSBzdWNj
ZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXgg
NmVlNDE5ZGE2YTc4ZjgxMjY2YmVlMmQ2YTRhZjVjNTZkOWVkOTc1My4uNTJlYjFjNzQ4ZDM0NzA1
NTIzMDFjYWU1ZTAzMjE2NDk0MzdhNjc1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBpbmxpbmUgdm9pZCBTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogcwogICAgIC8vIE5ld2VyIHZlcnNpb25zIG9mIHRoZSBTVEwgaGF2ZSBhbiBzdGQ6Om1h
a2VfcGFpciBmdW5jdGlvbiB0aGF0IHRha2VzIHJ2YWx1ZSByZWZlcmVuY2VzLgogICAgIC8vIFdo
ZW4gZWl0aGVyIG9mIHRoZSBwYXJhbWV0ZXJzIGFyZSBiaXRmaWVsZHMsIHRoZSBDKysgY29tcGls
ZXIgd2lsbCB0cnkgdG8gYmluZCB0aGVtIGFzIGx2YWx1ZXMsIHdoaWNoIGlzIGludmFsaWQuIFRv
IHdvcmsgYXJvdW5kIHRoaXMsIHVzZSB1bmFyeSAiKyIgdG8gbWFrZSB0aGUgcGFyYW1ldGVyIGFu
IHJ2YWx1ZS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MjYxIGZvciBtb3JlIGRldGFpbHMKLSAgICBzdGQ6OnBhaXI8VHJhbnNpdGlvbk1hcDo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcCgpLT5hZGQoZ2xvYmFsRGF0YSwgbWFrZV9wYWly
KHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cywgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5Q
cmV2aW91cyksIHN0cnVjdHVyZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgVHJh
bnNpdGlvbk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcCgpLT5hZGQoZ2xvYmFsRGF0YSwgbWFr
ZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cywgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1
dGVzSW5QcmV2aW91cyksIHN0cnVjdHVyZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICAvLyBUaGVyZSBhbHJlYWR5IGlzIGFuIGVudHJ5ISAtIHdlIHNob3VsZCBvbmx5
IGhpdCB0aGlzIHdoZW4gZGVzcGVjaWZ5aW5nLgotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0
LmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAgICAgIEFTU0VS
VChyZXN1bHQuaXRlcmF0b3IuZ2V0KCkuc2Vjb25kLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
KTsKICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMp
OwotICAgICAgICBtYXAoKS0+c2V0KHJlc3VsdC5maXJzdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
bWFwKCktPnNldChyZXN1bHQuaXRlcmF0b3IsIHN0cnVjdHVyZSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCmluZGV4IDFiYjNjZDViYjNkOWJl
OTY3ODMxMjllOGU1YWUyMTMwZDJlOGJmNzguLmYwMWEwYzgyNmIxYzQ3Zjc3NGJhMzcxYjMzMmM2
YWUzZDc0YmM4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtHQ01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5o
CkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbWFwX2l0ZXJhdG9yIG1faXRlcmF0
b3I7CiAgICAgfTsKIAorICAgIHR5cGVkZWYgV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0
b3I+IEFkZFJlc3VsdDsKKwogICAgIFdlYWtHQ01hcCgpCiAgICAgewogICAgIH0KQEAgLTEyMSwx
NyArMTIzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWFwLmdldChrZXkpOwogICAg
IH0KIAotICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIEFkZFJlc3Vs
dCBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVy
bmFsVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRl
cmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQoa2V5LCAwKTsKLSAgICAgICAgaWYgKGl0ZXIu
c2Vjb25kKSB7CisgICAgICAgIHR5cGVuYW1lIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAg
ICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBnbG9iYWxEYXRhLmhlYXAuaGFuZGxlSGVhcCgpLT5h
bGxvY2F0ZSgpOwotICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gc2xvdDsKKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gc2xvdDsKICAgICAgICAgICAgIEhhbmRs
ZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNsb3QsIHRoaXMsIEZpbmFsaXplckNhbGxi
YWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkpOwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6
aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3QsIHZhbHVlKTsKICAgICAgICAgICAgICpz
bG90ID0gdmFsdWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGl0ZXI7CisgICAgICAgIC8v
IFdlYWtHQ01hcCBleHBvc2VzIGEgZGlmZmVyZW50IGl0ZXJhdG9yLCBzbyB3ZSBuZWVkIHRvIHdy
YXAgaXQgYW5kIGNyZWF0ZSBvdXIgb3duIEFkZFJlc3VsdC4KKyAgICAgICAgcmV0dXJuIEFkZFJl
c3VsdChpdGVyYXRvcihyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgc2V0KGl0ZXJhdG9yIGl0ZXIsIEV4dGVybmFsVHlwZSB2YWx1ZSkK
QEAgLTE0NCwxMiArMTQ3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCiAg
ICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiBpdGVy
ID0gbV9tYXAuYWRkKGtleSwgMCk7Ci0gICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIuZmly
c3QtPnNlY29uZDsKLSAgICAgICAgaWYgKGl0ZXIuc2Vjb25kKSB7CisgICAgICAgIHR5cGVuYW1l
IE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAg
SGFuZGxlU2xvdCBzbG90ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CisgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgc2xvdCA9IGdsb2JhbERhdGEuaGVhcC5o
YW5kbGVIZWFwKCktPmFsbG9jYXRlKCk7CiAgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9y
KHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBrZXkpOwotICAgICAgICAgICAgaXRlci5maXJz
dC0+c2Vjb25kID0gc2xvdDsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
c2xvdDsKICAgICAgICAgfQogICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0
ZUJhcnJpZXIoc2xvdCwgdmFsdWUpOwogICAgICAgICAqc2xvdCA9IHZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCmluZGV4IDYwZDU5OTI4YTQ2
N2E2MTdlMmYzYTc4MWViZTIwMDUxNWUzNmQ5MDAuLjlkZTM5YWQ4YTI5ODYyMmM0MzNhNjdlYjY0
YTcyMjA0ZGUxOWU2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Q
cm9maWxlVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmls
ZVRyZWVOb2RlLmgKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9jaGls
ZHJlbiA9IG5ldyBNYXAoKTsKICAgICAKICAgICAgICAgUHJvZmlsZVRyZWVOb2RlIG5ld0VudHJ5
OwotICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fY2hpbGRyZW4t
PmFkZChTdHJpbmcobmFtZSksIG5ld0VudHJ5KTsKLSAgICAgICAgUHJvZmlsZVRyZWVOb2RlKiBj
aGlsZEluTWFwID0gJnJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQoU3RyaW5nKG5hbWUpLCBuZXdFbnRyeSk7CisgICAg
ICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJbk1hcCA9ICZyZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICAgICAgKytjaGlsZEluTWFwLT5tX2NvdW50OwogICAgICAgICByZXR1cm4gY2hpbGRJ
bk1hcDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5o
IGIvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAppbmRleCBjYWZiMjY0OWViNjI0NzFh
Y2M5NmY0Y2YzNzg5ZWMwNDlkNzQwMGVlLi5kN2Q5ZTQzYTlhNTVhMWZkZmE4ODNmNzg5N2ExMDc3
OTlhNWNmZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciBpdGVyYXRvcjsKICAgICAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Cisg
ICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAg
ICAgICAgIAogICAgICAgICBIYXNoQ291bnRlZFNldCgpIHt9CiAgICAgICAgIApAQCAtNTcsNyAr
NTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gSW5jcmVhc2VzIHRoZSBjb3VudCBp
ZiBhbiBlcXVhbCB2YWx1ZSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gdGhlIHJldHVy
biB2YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyAKICAg
ICAgICAgLy8gbG9jYXRpb24sIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRy
eSB3YXMgYWRkZWQuCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0
IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwog
ICAgICAgICAKICAgICAgICAgLy8gUmVkdWNlcyB0aGUgY291bnQgb2YgdGhlIHZhbHVlLCBhbmQg
cmVtb3ZlcyBpdCBpZiBjb3VudAogICAgICAgICAvLyBnb2VzIGRvd24gdG8gemVybywgcmV0dXJu
cyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyByZW1vdmVkLgpAQCAtMTQyLDEwICsxNDMsMTAgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgaW5saW5lIHN0ZDo6
cGFpcjx0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKKyAgICBpbmxpbmUgdHlwZW5hbWUg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBI
YXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFZh
bHVlVHlwZSAmdmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsgCi0gICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNv
bmQ7CisgICAgICAgIEFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsKKyAg
ICAgICAgKytyZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggYmU3ZTllYmVkMTM3OTNiYTc4ZTBjYWZkNzM5MDVi
MWUwNGMzMDU3OC4uMjZhOWQ5YzVjYjE1OGQzYTVmZWI3MmVjNWNjODUwYThlNjAxNjNkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hNYXAuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZh
bHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsKKyAgICAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0Owog
CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHN3YXAoSGFzaE1hcCYpOwpAQCAtOTQsMTIgKzk1
LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90
IGtleSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBp
cyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAv
LyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBh
ZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1h
cHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwg
TWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAgLy8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBh
bHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUg
aXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4g
dGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7
IAorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBl
KTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQg
cmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTEyMiwxMiArMTIzLDEyIEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmKTsKICAgICAgICAgLy8g
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1ZVR5cGUmLCBjb25zdCBUJik7CiAgICAgICAg
IC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFz
aENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBl
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+
IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYsIE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgcGFp
cjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5S
ZWZlcmVuY2VUeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChjb25zdCBLZXlUeXBl
JiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CiAKICAgICAgICAgY2xhc3MgSGFzaE1hcEtl
eXNQcm94eSA6IHByaXZhdGUgSGFzaE1hcCB7CiAgICAgICAgIHB1YmxpYzoKQEAgLTMxOSwzNCAr
MzIwLDM0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAg
aW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJv
b2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lQWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFw
cGVkUGFzc0luUmVmZXJlbmNlVHlwZSBtYXBwZWQpIAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hGdW5j
dGlvbnM+ID4oa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFp
cjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0
eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1h
cHBlZCkgCiAgICAgewotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBpbmxp
bmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAg
ICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7CisgICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2Fs
bCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBoYXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNl
dCB0aGUgbWFwcGVkIHZhbHVlLgotICAgICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBw
ZWQsIHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3Rv
cmUobWFwcGVkLCByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFRZUEUsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotICAgIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hNYXBU
cmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywgSGFzaFRyYW5zbGF0b3I+ID4oa2V5LCB2YWx1
ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFkZChj
b25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXggMzNjYjE0ZGFh
YjY4MjY4N2YwYWU4ZTZjMmM4ZjFiMmJhZWY4YWI5Ni4uMWIzYjJlMjg3MzM0MzliMTBiYjc1M2M5
MDRkNTRmZmVjNTVmMjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKICAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5
cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5
cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAgdm9pZCBzd2FwKEhhc2hTZXQmKTsK
IApAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICAvLyBUaGUgcmV0
dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBpbnRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxv
Y2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVu
dHJ5IHdhcyBhZGRlZC4KLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZh
bHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogCiAg
ICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9i
amVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8gd2l0aCBzb21lIG90aGVy
IHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0
IGlzIGFscmVhZHkKQEAgLTg2LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8v
ICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFzaENv
ZGUpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJldmVyc2UgdGhlIG9yZGVyIG9mIHRo
ZSB0ZW1wbGF0ZSBhcmd1bWVudHMgc28gdGhhdCBjYWxsZXJzCiAgICAgICAgIC8vIGNhbiBqdXN0
IHBhc3MgdGhlIHRyYW5zbGF0b3IgYW5kIGxldCB0aGUgY29tcGlsZXIgZGVkdWNlIFQuCi0gICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBwYWlyPGl0
ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVCYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gQWRkUmVzdWx0IGFkZChjb25zdCBUJik7CiAKICAg
ICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3Zl
KGl0ZXJhdG9yKTsKQEAgLTE3NywxNCArMTc4LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAg
aW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxULCBVLCBWPjo6aXRlcmF0b3IsIGJvb2w+IEhh
c2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQorICAgIGlubGluZSB0
eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+OjpBZGRSZXN1bHQgSGFzaFNldDxULCBVLCBWPjo6YWRk
KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLmFk
ZCh2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNo
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4KKyAgICBp
bmxpbmUgdHlwZW5hbWUgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6QWRk
UmVzdWx0CiAgICAgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNv
bnN0IFQmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQ
YXNzaW5nSGFzaENvZGU8SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPiA+
KHZhbHVlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDA1NzIyZDljNTU2YTc5N2I0MTg4MDcy
MGQ3Y2UzMDA1N2ZiNWY2YjYuLjliZDU0ODJmYWNlYjcyMDk0NGNlNGM1MzExNzQ3NDBiZTQzYmI2
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0yOTYsNiArMjk2LDEyIEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB0cmFu
c2xhdGUoVCYgbG9jYXRpb24sIGNvbnN0IFUmLCBjb25zdCBUJiB2YWx1ZSkgeyBsb2NhdGlvbiA9
IHZhbHVlOyB9CiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4g
c3RydWN0IEhhc2hUYWJsZUFkZFJlc3VsdCB7CisgICAgICAgIEhhc2hUYWJsZUFkZFJlc3VsdChJ
dGVyYXRvclR5cGUgaXRlciwgYm9vbCBpc05ld0VudHJ5KSA6IGl0ZXJhdG9yKGl0ZXIpLCBpc05l
d0VudHJ5KGlzTmV3RW50cnkpIHsgfQorICAgICAgICBJdGVyYXRvclR5cGUgaXRlcmF0b3I7Cisg
ICAgICAgIGJvb2wgaXNOZXdFbnRyeTsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICBjbGFzcyBI
YXNoVGFibGUgewogICAgIHB1YmxpYzoKQEAgLTMwNSw2ICszMTEsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZSBW
YWx1ZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNoVHJhbnNsYXRvcjxIYXNoRnVu
Y3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JUeXBlOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJs
ZUFkZFJlc3VsdDxpdGVyYXRvcj4gQWRkUmVzdWx0OwogCiAgICAgICAgIEhhc2hUYWJsZSgpOwog
ICAgICAgICB+SGFzaFRhYmxlKCkgCkBAIC0zMzAsMTMgKzMzNywxMyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV90YWJsZVNpemU7IH0K
ICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fa2V5Q291bnQ7IH0KIAot
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
eyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2
YWx1ZSksIHZhbHVlKTsgfQorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4
dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0KIAogICAgICAgICAvLyBBIHNwZWNpYWwgdmVyc2lvbiBv
ZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3QgYnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCiAg
ICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBlLCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBl
IGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5CiAgICAgICAgIC8vIGluIHRoZSB0
YWJsZS4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4dHJhPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVCYga2V5
LCBjb25zdCBFeHRyYSYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRv
ciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZFBh
c3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4g
QWRkUmVzdWx0IGFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7CisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4g
QWRkUmVzdWx0IGFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7
CiAKICAgICAgICAgaXRlcmF0b3IgZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIHsgcmV0dXJuIGZp
bmQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsgfQogICAgICAgICBjb25zdF9pdGVyYXRv
ciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgeyByZXR1cm4gZmluZDxJZGVudGl0eVRy
YW5zbGF0b3JUeXBlPihrZXkpOyB9CkBAIC02NjUsNyArNjcyLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4
dHJhJiBleHRyYSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAg
ICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIApAQCAtNzAwLDcgKzcwNyw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAoSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rv
cjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRy
eSksIGZhbHNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNEZWxl
dGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVu
dHJ5OwpAQCAtNzExLDcgKzcxOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgICAg
IGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICAgZGVsZXRl
ZEVudHJ5ID0gZW50cnk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSGFzaFRyYW5zbGF0b3I6
OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwg
ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdv
b2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAgICAgICAgICAgIH0KICNpZiBEVU1QX0hBU0hU
QUJMRV9TVEFUUwogICAgICAgICAgICAgKytwcm9iZUNvdW50OwpAQCAtNzM4LDE5ICs3NDUsMTkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAvLyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBh
bmQgcmV0dXJuIHRoZSBuZXcgcG9zaXRpb24uCiAgICAgICAgICAgICBLZXlUeXBlIGVudGVyZWRL
ZXkgPSBFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KTsKICAgICAgICAgICAgIGV4cGFuZCgpOwot
ICAgICAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQo
ZW50ZXJlZEtleSksIHRydWUpOwotICAgICAgICAgICAgQVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkp
OwotICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgICAgICBBZGRSZXN1bHQgcmVzdWx0KGZp
bmQoZW50ZXJlZEtleSksIHRydWUpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRv
ciAhPSBlbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogICAgICAgICAK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRy
eSksIHRydWUpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRv
cihlbnRyeSksIHRydWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGlu
ZSBwYWlyPHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRk
UGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQorICAgIGlu
bGluZSB0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OkFkZFJlc3VsdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdI
YXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKICAgICB7CiAgICAgICAg
IGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwogCkBAIC03NjgsNyArNzc1LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgIHVuc2lnbmVkIGggPSBsb29rdXBSZXN1bHQuc2Vjb25kOwog
ICAgICAgICAKICAgICAgICAgaWYgKGZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAg
IHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwog
ICAgICAgICAKICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAg
ICAgICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7CkBAIC03ODMsMTQgKzc5MCwxNCBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgICAgIC8vIGZvbGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1
cm4gdGhlIG5ldyBwb3NpdGlvbi4KICAgICAgICAgICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4
dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpOwogICAgICAgICAgICAgZXhwYW5kKCk7Ci0gICAgICAg
ICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBwID0gc3RkOjptYWtlX3BhaXIoZmluZChlbnRlcmVk
S2V5KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQocC5maXJzdCAhPSBlbmQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgICAgIEFkZFJlc3VsdCByZXN1bHQoZmluZChlbnRl
cmVkS2V5KSwgdHJ1ZSk7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yICE9IGVu
ZCgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBp
bnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKKyAgICAgICAgcmV0
dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaCBi
L1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKaW5kZXggNzk5NDY2ZmE5OGM2ZGY3ZTI1YjIw
NjdjMmEyMDBmNDc5NDczYWMxMi4uMjFlMzhkODNhYjQ3MDY3ODFjMzdiMTUxZjFkY2UxMTIyNDkz
MmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCkBAIC04MSw2ICs4MSw4IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RSZXZlcnNlSXRlcmF0b3I8VmFsdWVU
eXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RSZXZlcnNlSXRlcmF0b3I8VmFsdWVU
eXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz47CiAKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKKwogICAgICAgICBMaXN0SGFzaFNldCgp
OwogICAgICAgICBMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYpOwogICAgICAgICBMaXN0
SGFzaFNldCYgb3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0Jik7CkBAIC0xMjQsMTAgKzEyNiwx
MCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG9mIGFk
ZCBpcyBhIHBhaXIgb2YgYW4gaXRlcmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLCAK
ICAgICAgICAgLy8gYW5kIGEgYm9vbCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBh
ZGRlZC4KLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYp
OworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogCi0gICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZh
bHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKTsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gaW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAg
ICAgQWRkUmVzdWx0IGluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBj
b25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKTsKKyAgICAgICAgQWRkUmVzdWx0IGluc2VydEJlZm9y
ZShpdGVyYXRvciwgY29uc3QgVmFsdWVUeXBlJik7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29u
c3QgVmFsdWVUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTY5NSwy
NiArNjk3LDI1IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVu
YW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExp
c3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFs
dWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRS
ZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjphZGQoY29uc3QgVmFsdWVU
eXBlICZ2YWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8dHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2
YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgICAgIGFwcGVuZE5vZGUoKnJlc3VsdC5maXJzdCk7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihtYWtlSXRlcmF0b3IoKnJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwor
ICAgICAgICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faW1wbC50ZW1w
bGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7CisgICAg
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGFwcGVuZE5vZGUoKnJlc3Vs
dC5pdGVyYXRvcik7CisgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1
bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotICAgIHBhaXI8
dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppdGVyYXRvciwgYm9v
bD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0
b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hT
ZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRSZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYg
bmV3VmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4obmV3
VmFsdWUsIG1fYWxsb2NhdG9yLmdldCgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0g
ICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGl0Lm5vZGUoKSwgKnJlc3VsdC5maXJzdCk7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlSXRlcmF0b3IoKnJlc3VsdC5maXJzdCks
IHJlc3VsdC5zZWNvbmQpOwotCisgICAgICAgIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG1f
YWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuaXRlcmF0b3IpOworICAg
ICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVz
dWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVuYW1lIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExpc3RIYXNoU2V0PFQs
IGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3Jl
VmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hT
ZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRSZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBpbnNlcnRC
ZWZvcmUoZmluZChiZWZvcmVWYWx1ZSksIG5ld1ZhbHVlKTsgCiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFz
aE1hcC5oCmluZGV4IGY0OGE1OWNmNjM3MDIyNjQwNDI1MjAzYzhlNDJkMTZiZWQ4YjUxNzMuLjBh
ZjM2YmU2MDI3ZmI1MDBiYmZlYTVjMjFkYzZlMDhjZGYwMTlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNo
TWFwLmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1
ZVR5cGU+IGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAog
ICAgICAgICB2b2lkIHN3YXAoSGFzaE1hcCYpOwogCkBAIC04NiwxNCArODcsMTQgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIC8vIHJlcGxhY2VzIHZhbHVlIGJ1dCBub3Qga2V5IGlmIGtleSBp
cyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0
aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xl
YW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAg
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlw
ZSk7IAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBzZXQoUmF3S2V5VHlwZSwgTWFwcGVk
UGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBw
ZWRQYXNzSW5UeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IHNldChSYXdLZXlUeXBlLCBNYXBwZWRQ
YXNzSW5UeXBlKTsKIAogICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5IGlzIGFscmVhZHkg
cHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRv
ciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3Mg
dHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQKLSAgICAgICAgcGFpcjxpdGVy
YXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsgCi0gICAg
ICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBl
KTsgCisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5
cGUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblR5cGUp
OwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsKICAgICAgICAgdm9pZCBy
ZW1vdmUoUmF3S2V5VHlwZSk7CkBAIC0xMDQsOCArMTA1LDggQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIE1hcHBlZFBhc3NPdXRUeXBlIHRha2UoUmF3S2V5VHlwZSk7IC8vIGVmZmljaWVudCBj
b21iaW5hdGlvbiBvZiBnZXQgd2l0aCByZW1vdmUKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0lu
UmVmZXJlbmNlVHlwZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChS
YXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0
IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7Cisg
ICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luUmVmZXJl
bmNlVHlwZSk7CiAKICAgICAgICAgSGFzaFRhYmxlVHlwZSBtX2ltcGw7CiAgICAgfTsKQEAgLTE5
NSw1MiArMTk2LDUyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+
OjppdGVyYXRvciwgYm9vbD4KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4s
IFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywg
WD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5
cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPFRy
YW5zbGF0b3I+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlu
bGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0
b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBX
LCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojppbmxp
bmVBZGQoUmF3S2V5VHlwZSBrZXksIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPFRyYW5zbGF0b3I+KGtl
eSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlwZW5hbWUg
SGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBl
bmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hN
YXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVk
UGFzc0luVHlwZSBtYXBwZWQpIAogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vj
b25kKSB7CisgICAgICAgIEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQp
OworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUg
aW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsg
d2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0
czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBw
ZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAg
ICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3Is
IGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRS
ZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OnNldChSYXdLZXlUeXBl
IGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpIAogICAgIHsKLSAgICAgICAgcGFpcjxpdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKLSAgICAgICAgaWYg
KCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFkZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQo
a2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
ICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0
YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAg
IE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAg
ICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYs
IFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmFk
ZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5h
bWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6
aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcs
IFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmFkZChS
YXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1NwZWN0cnVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCmluZGV4IDU5YmM0YTI5YTlk
OGQ3NzUxYjJkZDFkMDMxYjg1MjNjNjViNjM0N2QuLjVlN2E0ODRjZDg3NjZiY2FmMjJjYTRjOTNk
ZGNlOTcwZGQyYmEyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKKysr
IGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAu
YWRkKGtleSwgY291bnQpOwotICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSBjb3VudDsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1h
cDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNv
dW50KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kICs9IGNvdW50OwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBs
b25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCmluZGV4
IGVjNWRlNzIyMDBmNTc1ZDc3NGNjMjBkOTFhOTM4ZTlkOWQ5ZjAyNjkuLjNhOTAzZjg5NWUwZjk2
NWY0NjRmZWNmOGIwOWNiYTkzNzI0MGJkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dU
RlRocmVhZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCkBA
IC02MywxMCArNjMsMTAgQEAgSWRlbnRpZmllclRhYmxlOjp+SWRlbnRpZmllclRhYmxlKCkKICAg
ICAgICAgKCppdGVyKS0+c2V0SXNJZGVudGlmaWVyKGZhbHNlKTsKIH0KIAotc3RkOjpwYWlyPEhh
c2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gSWRlbnRpZmllclRhYmxlOjphZGQo
U3RyaW5nSW1wbCogdmFsdWUpCitIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IElkZW50
aWZpZXJUYWJsZTo6YWRkKFN0cmluZ0ltcGwqIHZhbHVlKQogewotICAgIHN0ZDo6cGFpcjxIYXNo
U2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkKHZh
bHVlKTsKLSAgICAoKnJlc3VsdC5maXJzdCktPnNldElzSWRlbnRpZmllcih0cnVlKTsKKyAgICBI
YXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGFibGUuYWRkKHZhbHVl
KTsKKyAgICAoKnJlc3VsdC5pdGVyYXRvciktPnNldElzSWRlbnRpZmllcih0cnVlKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWRE
YXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKaW5kZXggYjAyZDEwZDdjODE5
MWE3YTVmZTdiNWU3YTcyNDQyZjU2OGZkNDY3ZC4uZGJjNWJhNmFjNTRmODU4YTcyNDhiNzNjYzA5
Njk3NjlmMDlhM2FiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApAQCAtNDYsOSArNDYsOSBAQCBj
bGFzcyBJZGVudGlmaWVyVGFibGUgewogcHVibGljOgogICAgIH5JZGVudGlmaWVyVGFibGUoKTsK
IAotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZChTdHJpbmdJbXBsKiB2YWx1ZSk7CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3Vs
dCBhZGQoU3RyaW5nSW1wbCogdmFsdWUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+Ci0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9v
bD4gYWRkKFUgdmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRk
KFUgdmFsdWUpOwogCiAgICAgYm9vbCByZW1vdmUoU3RyaW5nSW1wbCogcikKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggZDc3NWU3YmI5NGZmZTA2MzZkZjMzYmEy
ZGUzZWQ1YzM1YzlmOTFkYy4uNjZiZDc4NTFhMDA1MmRjNGUxOTZjMWJiNDBhNWQzYTgxMzk1ZTYw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtNzgsMTEgKzc4LDExIEBA
IHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHN0cmluZ1RhYmxlKCkKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgogc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCiB7
Ci0gICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IHN0cmluZ1RhYmxlKCkuYWRkPFQsIEhhc2hUcmFuc2xhdG9yPih2YWx1ZSk7CisgICAgSGFz
aFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFk
ZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBu
ZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJv
b2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICByZXR1cm4gYWRk
UmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5m
aXJzdDsKKyAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnkgPyBhZG9wdFJlZigqYWRkUmVz
dWx0Lml0ZXJhdG9yKSA6ICphZGRSZXN1bHQuaXRlcmF0b3I7CiB9CiAKIHN0cnVjdCBDU3RyaW5n
VHJhbnNsYXRvciB7CkBAIC0zMDAsNyArMzAwLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBB
dG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqIHIpCiAgICAgaWYgKCFyLT5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAKLSAgICBTdHJpbmdJ
bXBsKiByZXN1bHQgPSAqc3RyaW5nVGFibGUoKS5hZGQocikuZmlyc3Q7CisgICAgU3RyaW5nSW1w
bCogcmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRkKHIpLml0ZXJhdG9yOwogICAgIGlmIChyZXN1
bHQgPT0gcikKICAgICAgICAgci0+c2V0SXNBdG9taWModHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IDQxNThjOThkN2ZmODc0MDM4
ZTUxN2I2MGQxOTczYzcyOGRjZmFiNzkuLjgzN2I4ZmJkMjIwNWFkYzk3NDg2ZGQzZjBlOGYwMjA3
MzgwZjhkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtNzUsNyArNzUs
NyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmFjcXVpcmVMb2NrKFNRTFRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICBDb29yZGluYXRpb25JbmZvTWFwOjppdGVyYXRvciBj
b29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuZmluZChkYklk
ZW50aWZpZXIpOwogICAgIGlmIChjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPT0gbV9jb29yZGlu
YXRpb25JbmZvTWFwLmVuZCgpKSB7CiAgICAgICAgIC8vIE5vIHBlbmRpbmcgdHJhbnNhY3Rpb25z
IGZvciB0aGlzIERCCi0gICAgICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRp
bmF0aW9uSW5mb01hcC5hZGQoZGJJZGVudGlmaWVyLCBDb29yZGluYXRpb25JbmZvKCkpLmZpcnN0
OworICAgICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9N
YXAuYWRkKGRiSWRlbnRpZmllciwgQ29vcmRpbmF0aW9uSW5mbygpKS5pdGVyYXRvcjsKICAgICB9
CiAKICAgICBDb29yZGluYXRpb25JbmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9y
LT5zZWNvbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAKaW5kZXggMmEwOTYyNzk4YmJlZjMyNTRk
MDE3NTgzODU3MWJlM2I0MTI3MTY2Ny4uMTBiMDhhMmI3MjNjZGEyOTIwZDQzZGVmYTE4YzMxMTVl
ZmExYjIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9j
aHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lk
IFF1b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKAogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBkYXRhYmFzZVNpemUpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGEobV9kYXRhR3VhcmQp
OwotICAgIEhhc2hNYXA8U3RyaW5nLCBTaXplTWFwPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNl
U2l6ZXMuYWRkKG9yaWdpbklkZW50aWZpZXIsIFNpemVNYXAoKSkuZmlyc3Q7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFNpemVNYXA+OjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VTaXplcy5hZGQob3Jp
Z2luSWRlbnRpZmllciwgU2l6ZU1hcCgpKS5pdGVyYXRvcjsKICAgICBpdC0+c2Vjb25kLnNldChk
YXRhYmFzZU5hbWUsIGRhdGFiYXNlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKaW5kZXggMmMwZTk0ODM2ZjNjNjQ3
MjIyMmFiNjcyZDQzMzc3N2YzZTFhNjA3Ny4uMjE2Yjk0NWM0OWI5MTFlM2Y0NWVmZTVhN2U0YzEz
Mjk2ZjMwZWIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBIYXNo
TWFwPGNvbnN0IEpTQzo6SGFzaFRhYmxlKiwgSlNDOjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVy
ID0gbV9tYXAuZmluZChzdGF0aWNUYWJsZSk7CiAgICAgICAgIGlmIChpdGVyICE9IG1fbWFwLmVu
ZCgpKQogICAgICAgICAgICAgcmV0dXJuICZpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiAm
bV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5maXJz
dC0+c2Vjb25kOworICAgICAgICByZXR1cm4gJm1fbWFwLnNldChzdGF0aWNUYWJsZSwgSlNDOjpI
YXNoVGFibGUoKnN0YXRpY1RhYmxlKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAw
MDUwYTczMTU3ZmRmY2I1ZGUwNzYxZjMyNWY2ZmQxNWFjMDAwNzZkLi5jMTFmNjAxMDM4YTY2MDA2
OWJhYTVkOTkyNmNjMjVkMmJlZDA0ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBTdHJ1Y3R1cmUqIGNhY2hlRE9N
U3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dQogewogICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmVzKCk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5m
bykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSkpLmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNs
YXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKSkuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIH0K
IAogSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgKaW5kZXggNzlhM2RhZmQwZTY0YmE1ZDhiMGViNTdlOGU4MWU5MmNlYzg0YzNkMy4u
NDg3ZjhlMzVhNGM2OWViZTVjNDRhMmQ0Njk1Mjk4ZTRkZGNiMzFjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTE0Miw4ICsxNDIsOCBAQCBlbnVtIFBh
cmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICBpZiAoc2V0SW5saW5lQ2FjaGVkV3JhcHBl
cih3b3JsZCwgZG9tT2JqZWN0LCB3cmFwcGVyKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgSlNDOjpQYXNzV2VhazxKU0RPTVdyYXBwZXI+IHBhc3NXZWFrKCp3b3JsZC0+Z2xvYmFsRGF0
YSgpLCB3cmFwcGVyLCB3cmFwcGVyT3duZXIod29ybGQsIGRvbU9iamVjdCksIHdyYXBwZXJDb250
ZXh0KHdvcmxkLCBkb21PYmplY3QpKTsKLSAgICAgICAgcGFpcjxET01PYmplY3RXcmFwcGVyTWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gd29ybGQtPm1fd3JhcHBlcnMuYWRkKGRvbU9iamVj
dCwgcGFzc1dlYWspOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29u
ZCk7CisgICAgICAgIERPTU9iamVjdFdyYXBwZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSB3b3Js
ZC0+bV93cmFwcGVycy5hZGQoZG9tT2JqZWN0LCBwYXNzV2Vhayk7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgdm9pZCB1bmNhY2hlV3JhcHBlcihET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0LCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRl
eCBhZGNkMzg4OWZmMjc4N2UwZmE0YTIyMGRhYzY0NzY1NTc2ZDg1MTEwLi43NGYzNWIwYjc5MmMx
YzA2MDM3ZDFhZGVmM2IyMzEzNjU4YTkyZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9y
Q2xhc3M6OmNyZWF0ZShleGVjLCBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSksIGNvbnN0X2Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKICAgICAgICAgQVNTRVJUKCFjb25zdF9jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuY29udGFp
bnMoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbykpOwogICAgICAgICBKU0M6OldyaXRlQmFycmll
cjxKU0M6OkpTT2JqZWN0PiB0ZW1wOwotICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNz
OjpzX2luZm8sIHRlbXApLmZpcnN0LT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xh
c3M6OnNfaW5mbywgdGVtcCkuaXRlcmF0b3ItPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYzhmMTZmNWE5NjE2NWJlOGUxM2RiMmJlYjVlYWIxNjA4
MzdlOTIwYy4uYmRlZTQ2ODdkNmMwNDIxMTYzZWU4OWMzYjAxMGM2YTRiOGU3ZGVlYSAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCkBAIC04MiwxMSArODIsMTEgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExp
c3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICBBU1NF
UlRfQVJHKGxpc3RlbmVyLCBsaXN0ZW5lcik7CiAgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsK
IAotICAgIHBhaXI8UGFnZUxpc3RlbmVyc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1f
cGFnZUxpc3RlbmVyc01hcC5hZGQocGFnZSwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0g
ICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OworICAgIFBhZ2VM
aXN0ZW5lcnNNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBh
Z2UsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQgPSBuZXcgTGlzdGVuZXJTZXQ7CiAKLSAgICBMaXN0ZW5lclNldCogbGlzdGVu
ZXJzID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIGxpc3RlbmVycy0+YWRkKGxpc3RlbmVyKTsK
IAogICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGY0OTVjZWRjODYzOWYw
ZmYzYWM5N2NjMzYzYzYzN2FjNDFjZDMyNTAuLjEwZGVkNzAwNzA3OTQwMjNkYzdlZDIxMjk5ZmNm
YjI0ODYxMjE3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgU3RyaW5nIFNjcmlwdERlYnVnU2VydmVy
OjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWEK
ICAgICAgICAgcmV0dXJuICIiOwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0
b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAg
IGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQgPSBt
X3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2lu
dE1hcCgpKS5maXJzdDsKKyAgICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQo
c291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgpKS5pdGVyYXRvcjsKICAgICBpZiAo
aXQtPnNlY29uZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKSkKICAg
ICAgICAgcmV0dXJuICIiOwogICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGlu
ZU51bWJlciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTZmMGE4MTQ4NzQx
MzdmNTI1YmM0OTUzNmUzMTQyZmExODgyMmVkZS4uN2FjMTU1Y2NlNmNjMmE0ZGQ5YWI3YmFjNzdk
MTUwOTQ4ZWFmYzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zOTIsMTMgKzM5MiwxMyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc3RhcnRPYmplY3RJbnRlcm5hbChKU09iamVjdCogb2JqZWN0KQogICAgIHsKICAg
ICAgICAgLy8gUmVjb3JkIG9iamVjdCBmb3IgZ3JhcGggcmVjb25zdHJ1Y3Rpb24KLSAgICAgICAg
cGFpcjxPYmplY3RQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fb2JqZWN0UG9vbC5hZGQo
b2JqZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgT2JqZWN0UG9vbDo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wuc2l6
ZSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSBkdXBsaWNhdGUgcmVmZXJlbmNlcwot
ICAgICAgICBpZiAoIWl0ZXIuc2Vjb25kKSB7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3
RW50cnkpIHsKICAgICAgICAgICAgIHdyaXRlKE9iamVjdFJlZmVyZW5jZVRhZyk7Ci0gICAgICAg
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaXRlci5maXJzdC0+c2Vjb25kKSA8IG1f
b2JqZWN0UG9vbC5zaXplKCkpOwotICAgICAgICAgICAgd3JpdGVPYmplY3RJbmRleChpdGVyLmZp
cnN0LT5zZWNvbmQpOworICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGFk
ZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKSA8IG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAg
ICAgICAgd3JpdGVPYmplY3RJbmRleChhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03MjYsMTAgKzcy
NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiAgICAgewogICAgICAgICBVU3RyaW5nIHN0ciA9IGlkZW50LnVzdHJpbmcoKTsKLSAgICAgICAg
cGFpcjxTdHJpbmdDb25zdGFudFBvb2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9jb25zdGFu
dFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29sLnNpemUoKSk7Ci0gICAgICAgIGlm
ICghaXRlci5zZWNvbmQpIHsKKyAgICAgICAgU3RyaW5nQ29uc3RhbnRQb29sOjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29s
LnNpemUoKSk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
ICAgIHdyaXRlKFN0cmluZ1Bvb2xUYWcpOwotICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChp
dGVyLmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChhZGRSZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAppbmRleCA2ZmRmMzczNDJl
MDMwY2Q2ZWVkYTVmNzEwYWI5MmVhOTE5M2E0MGQwLi41YzMzNTkzNzcwNWVmMjNjODZkNjY3MGJi
MWNiOTM4N2FmMzY4MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9O
UFY4T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0
LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIE5QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0
KE5QUCBucHAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpdGVyID0gc3RhdGljVjhO
UE9iamVjdE1hcCgpLT5zZXQodjhPYmplY3RIYXNoLCBWOE5QT2JqZWN0VmVjdG9yKCkpLmZpcnN0
OyAKKyAgICAgICAgaXRlciA9IHN0YXRpY1Y4TlBPYmplY3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFz
aCwgVjhOUE9iamVjdFZlY3RvcigpKS5pdGVyYXRvcjsKICAgICB9CiAKICAgICBWOE5QT2JqZWN0
KiB2OG5wT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4oX05QTl9DcmVhdGVP
YmplY3QobnBwLCAmVjhOUE9iamVjdENsYXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRp
ZmllclJlcC5jcHAKaW5kZXggZmVkNDdjYTVlZWU4NjY2MDE2MjQ1OGUzZTEwNGY0NjEyZjFkZjhm
Zi4uMmFjZjE0MTUzZDFkYjllMTJiNzI1NThhNTM4OGQ5ODZmZjhhNWU4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIElkZW50aWZp
ZXJSZXAqIElkZW50aWZpZXJSZXA6OmdldChpbnQgaW50SUQpCiAgICAgICAgIHJldHVybiBpZGVu
dGlmaWVyOwogICAgIH0KICAgICAKLSAgICBwYWlyPEludElkZW50aWZpZXJNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBpbnRJZGVudGlmaWVyTWFwKCkuYWRkKGludElELCAwKTsgCi0gICAg
aWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29u
ZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAoaW50
SUQpOworICAgIEludElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBpbnRJZGVudGlm
aWVyTWFwKCkuYWRkKGludElELCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAg
ICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAoaW50SUQpOwogICAgICAgICAKLSAg
ICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAg
IGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0KICAg
ICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogfQogCiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+
LCBJZGVudGlmaWVyUmVwKj4gU3RyaW5nSWRlbnRpZmllck1hcDsKQEAgLTkzLDE1ICs5MywxNSBA
QCBJZGVudGlmaWVyUmVwKiBJZGVudGlmaWVyUmVwOjpnZXQoY29uc3QgY2hhciogbmFtZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgIAogICAgIFVTdHJpbmcgc3RyaW5nID0gc3RyaW5nVG9VU3RyaW5n
KFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgc3RybGVuKG5hbWUpKSk7
Ci0gICAgcGFpcjxTdHJpbmdJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
c3RyaW5nSWRlbnRpZmllck1hcCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsKLSAgICBpZiAocmVz
dWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAg
ICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJlcChuYW1lKTsKKyAg
ICBTdHJpbmdJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3RyaW5nSWRlbnRpZmll
ck1hcCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
IHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7CiAgICAgICAg
IAotICAgICAgICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAg
ICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAg
fQogICAgIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIGJvb2wgSWRlbnRpZmllclJlcDo6aXNWYWxpZChJ
ZGVudGlmaWVyUmVwKiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5j
cHAKaW5kZXggMmNiZTkyM2Y1ZDAwYTIxMmJhNjkwNGFiYmI2NDExZjk1ZTMwNTQzMS4uODM5ODZh
ZjU4M2M1OTA0MmYxYmY3Nzc1MTIwN2E4MDM1M2FkMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
TlBfanNvYmplY3QuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaE1h
cDxSb290T2JqZWN0KiwgSlNUb05QT2JqZWN0TWFwPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZp
bmQocm9vdE9iamVjdCk7CiAgICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKSB7CiAgICAg
ICAgICAgICByb290T2JqZWN0LT5hZGRJbnZhbGlkYXRpb25DYWxsYmFjaygmbV9pbnZhbGlkYXRp
b25DYWxsYmFjayk7Ci0gICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJvb3RPYmplY3QsIEpT
VG9OUE9iamVjdE1hcCgpKS5maXJzdDsKKyAgICAgICAgICAgIGl0ZXIgPSBtX21hcC5hZGQocm9v
dE9iamVjdCwgSlNUb05QT2JqZWN0TWFwKCkpLml0ZXJhdG9yOwogICAgICAgICB9CiAKICAgICAg
ICAgQVNTRVJUKGl0ZXItPnNlY29uZC5maW5kKGpzT2JqZWN0KSA9PSBpdGVyLT5zZWNvbmQuZW5k
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCBiOTg5YzFkNWE2ZWFjNzA4ODk0MzRmNTFjOTA3NjYzZmE3MzcyMmU0Li41
MjE5MDk3Y2U0ZGZkNjljY2Q4ZmJhNDcyOTk5MjgwY2RjZGQ3ZGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTI0Nyw3
ICsxMjQ3LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IHByb3AKIHN0YXRpYyB2b2lkIGxvZ1VuaW1w
bGVtZW50ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlEKQogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0LCAoKSk7Ci0gICAgaWYgKCFwcm9wZXJ0
eUlEU2V0LmFkZChwcm9wZXJ0eUlEKS5zZWNvbmQpCisgICAgaWYgKCFwcm9wZXJ0eUlEU2V0LmFk
ZChwcm9wZXJ0eUlEKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKICAgICBMT0dfRVJS
T1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVtZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICcl
cycuIiwgZ2V0UHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5
SUQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBlMzY3
MzVhZmI2YjE3MzQ3MTcwODY3ZTc0ODQxN2Q3ZTNkNjcyZTRiLi5kZDkwNGQzN2ZiOTU0ZTQ0ZGJh
NjUzODc2NzM1ODMxMTk4ZmFkM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VT
b3VyY2U6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAg
IHVuc2lnbmVkIGhhc2hLZXkgPSAoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkg
KyAxKSA8PCA2IHwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpIDw8IDQKICAgICAgICAg
ICAgICAgICAgICAgICAgfCAoZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpID09IFRl
eHRPcmllbnRhdGlvblVwcmlnaHQgPyA4IDogMCkgfCAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWwgPyA0IDogMCkgfCAoc3ludGhldGljQm9sZCA/IDIgOiAwKSB8IChz
eW50aGV0aWNJdGFsaWMgPyAxIDogMCk7CiAKLSAgICBTaW1wbGVGb250RGF0YSomIGNhY2hlZERh
dGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAg
U2ltcGxlRm9udERhdGEqJiBjYWNoZWREYXRhID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5
LCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmIChjYWNoZWREYXRhKQogICAgICAgICByZXR1
cm4gY2FjaGVkRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCA2ZDIyZmRjY2QwZDU3OWQwOGM0YTY1YzJlNmU1ZmZiYmI1YTI0ZmE1Li5lMDAyZjJmOGYwMTcw
ZTk4Y2E1NmQ3MWZlNWNkYjk3YmJlYTYyYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY29uc3QgQ1NTRm9udEZhY2VSdWxlKiBmb250RmFjZVJ1bGUpCiAgICAgICAg
IGlmIChmYW1pbHlOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+ID4mIGZhbWlseUZvbnRGYWNl
cyA9IG1fZm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOwor
ICAgICAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250
RmFjZXMgPSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnNl
Y29uZDsKICAgICAgICAgaWYgKCFmYW1pbHlGb250RmFjZXMpIHsKICAgICAgICAgICAgIGZhbWls
eUZvbnRGYWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+KTsK
IApAQCAtNDg3LDEzICs0ODcsMTMgQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9u
dERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICAgICAg
cmV0dXJuIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRp
b24sIGZhbWlseU5hbWUpOwogICAgIH0KIAotICAgIE93blB0cjxIYXNoTWFwPHVuc2lnbmVkLCBS
ZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9
IG1fZm9udHMuYWRkKGZhbWlseSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8
SGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21l
bnRlZEZvbnRGYWNlQ2FjaGUgPSBtX2ZvbnRzLmFkZChmYW1pbHksIG51bGxwdHIpLml0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZUNhY2hlKQogICAgICAgICBzZWdt
ZW50ZWRGb250RmFjZUNhY2hlID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0
cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPik7CiAKICAgICBGb250VHJhaXRzTWFzayB0cmFpdHNN
YXNrID0gZm9udERlc2NyaXB0aW9uLnRyYWl0c01hc2soKTsKIAotICAgIFJlZlB0cjxDU1NTZWdt
ZW50ZWRGb250RmFjZT4mIGZhY2UgPSBzZWdtZW50ZWRGb250RmFjZUNhY2hlLT5hZGQodHJhaXRz
TWFzaywgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+
JiBmYWNlID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01hc2ssIDApLml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFmYWNlKSB7CiAgICAgICAgIGZhY2UgPSBDU1NTZWdtZW50
ZWRGb250RmFjZTo6Y3JlYXRlKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAppbmRleCBmNDYyYzI0YzRkNjU3NTY1YjM2ZTAzMjllZjVhZTQ3ZDhj
M2NmNjgwLi5iYjAwZDAyMjBkZWJjNzEyMGQzMmQzNzA3MWNhNmVmMzMyZTYwNjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgRm9udERhdGEqIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpnZXRGb250RGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGkKICAgICBGb250VHJhaXRzTWFzayBkZXNpcmVkVHJh
aXRzTWFzayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAgICAgdW5zaWduZWQgaGFz
aEtleSA9ICgoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCAoRm9u
dFRyYWl0c01hc2tXaWR0aCArIDEpKSB8ICgoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkg
PT0gVmVydGljYWwgPyAxIDogMCkgPDwgRm9udFRyYWl0c01hc2tXaWR0aCkgfCBkZXNpcmVkVHJh
aXRzTWFzazsKIAotICAgIFNlZ21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRh
VGFibGUuYWRkKGhhc2hLZXksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU2VnbWVudGVkRm9udERh
dGEqJiBmb250RGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlcmF0b3It
PnNlY29uZDsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCAzMWE4
N2FmMGMzYjM0ZjhlNjZmNzQ4ZmExMTZmZGIxN2U0NTQ3ZDMxLi4wNDFkNmM4MjQ1MjNkMmYyOWI1
NjJmYjFjMjQ0ZjUyNDBjMDZjMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVB
cHBseVByb3BlcnR5LmNwcApAQCAtMTAwNCw3ICsxMDA0LDcgQEAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAgICAgICBJ
dGVyYXRvciBlbmQgPSBwYXJlbnRNYXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQg
PSBwYXJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDb3Vu
dGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGly
ZWN0aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMm
IGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRl
cmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQp
IHsKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQgPSBpdC0+c2Vjb25kLm1fcmVz
ZXQ7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSBpdC0+c2Vjb25k
Lm1fcmVzZXRWYWx1ZTsKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHBhaXItPmZpcnN0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSktPmdl
dEludFZhbHVlKCk7Ci0gICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9
IG1hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5h
ZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNv
bmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAg
ICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBkaXJl
Y3RpdmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCmluZGV4IDE5NjFkNTI2Njk1NjIzYWNhNmMxNzQ3YTUzNDRhOWUyYjBmM2M4ZGYu
LjA1Y2E1NjY3MjFhNzY1OWQ5ODNlZTYwOWRjNDA2NmU5OGI0NTFkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQ5NiwxMCArNDk2LDEwIEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVldHModW5zaWduZWQgZmlyc3ROZXcs
IGNvbnN0IFZlY3RvcjxSCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAgICAgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29wZShjc3NTaGVldCk7CiAgICAgICAg
IGlmIChzY29wZSkgewotICAgICAgICAgICAgcGFpcjxTY29wZWRSdWxlU2V0TWFwOjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAg
IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7Ci0gICAg
ICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC0+YWRkUnVsZXNGcm9tU2hlZXQoY3NzU2hl
ZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgICAgICAgICAgU2NvcGVkUnVsZVNldE1h
cDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmFkZChzY29wZSwg
bnVsbHB0cik7CisgICAgICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgUnVsZVNl
dCgpKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5hZGRSdWxlc0Zy
b21TaGVldChjc3NTaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMzczLDcgKzIzNzMsNyBAQCB2b2lkIFJ1
bGVTZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBt
YXAsIGNvbnN0IFJ1bGVEYQogewogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm47Ci0gICAg
T3duUHRyPFZlY3RvcjxSdWxlRGF0YT4gPiYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0ciku
Zmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1h
cC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcnVsZXMpCiAg
ICAgICAgIHJ1bGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSdWxlRGF0YT4pOwogICAgIHJ1bGVz
LT5hcHBlbmQocnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBj
NDZjNzA0N2M1MDBlNGIyODNmM2Q3ZWM1ODRiZDliOGU5MzQ2ZWVhLi4wNWJhNTQ5NTAyYWZiODc2
NzdmMjUzMTJiZjEzYWI2NDk3NjlhNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cApAQCAtNTUsMTAgKzU1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVudCkKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKIAogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPElkZW50aWZpZXJWYWx1
ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2lkZW50aWZpZXJWYWx1ZUNhY2hlLmFk
ZChpZGVudCwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50
cnkuZmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlk
ZW50KTsKLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJZGVudGlmaWVyVmFs
dWVDYWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gbV9pZGVudGlmaWVyVmFsdWVDYWNoZS5hZGQoaWRl
bnQsIGR1bW15VmFsdWUpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRy
eS5pdGVyYXRvci0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
aWRlbnQpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5z
aWduZWQgcmdiVmFsdWUpCkBAIC03OCwxMCArNzgsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVl
KQogICAgICAgICBtX2NvbG9yVmFsdWVDYWNoZS5jbGVhcigpOwogCiAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8Q29sb3JWYWx1ZUNhY2hlOjppdGVy
YXRvciwgYm9vbD4gZW50cnkgPSBtX2NvbG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1bW15
VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNv
bmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOwotICAgIHJldHVy
biBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0IGVu
dHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKKyAgICBp
ZiAoZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7CisgICAgcmV0dXJuIGVudHJ5
Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUpCkBAIC0xMTcsMTUgKzExNywxNSBAQCBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJp
bWl0aQogICAgIH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsK
LSAgICBwYWlyPEludGVnZXJWYWx1ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBjYWNo
ZS0+YWRkKGludFZhbHVlLCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAg
ICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZSwgdHlwZSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSW50ZWdlclZh
bHVlQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFsdWUsIGR1bW15VmFs
dWUpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5pdGVyYXRvci0+
c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgcmV0
dXJuIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZSkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiB2YWx1ZSA9IG1f
Zm9udEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5hbWUsIDApLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNh
Y2hlLmFkZChmYW1pbHlOYW1lLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUp
CiAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTM4
LDcgKzEzOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VW
YWx1ZUNhY2hlLnNpemUoKSA+IG1heGltdW1Gb250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9m
b250RmFjZVZhbHVlQ2FjaGUuY2xlYXIoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2
YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7
CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4mIHZhbHVlID0gbV9mb250RmFjZVZhbHVlQ2FjaGUu
YWRkKHN0cmluZywgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICB2YWx1ZSA9IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKHN0cmluZywgY29udGV4dFN0
eWxlU2hlZXQpOwogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2Vk
UmFkaW9CdXR0b25zLmNwcAppbmRleCA0NzBkYTJhZDVjNzNiMTc5MmFlNjIzZDk0ODI2OGI4ZDY1
NWU2YzU4Li5lNjcyMzI5YWY4ZGUzNzhiZWZkZmMxNGY4YWNiZDBmMmVjMGM3NDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgUmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50
KiBidXR0b24pCiB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBi
dXR0b24pCiB7CiAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAo
IW1fbWVtYmVycy5hZGQoYnV0dG9uKS5zZWNvbmQpCisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1
dHRvbikuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgZ3JvdXBXYXNWYWxp
ZCA9IGlzVmFsaWQoKTsKICAgICBpZiAoYnV0dG9uLT5yZXF1aXJlZCgpKQpAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQogICAgICAgICBtX25hbWVU
b0dyb3VwTWFwID0gYWRvcHRQdHIobmV3IE5hbWVUb0dyb3VwTWFwKTsKIAotICAgIE93blB0cjxS
YWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+
bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5maXJzdC0+c2Vj
b25kOworICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3Vw
TWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdy
b3VwPigpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JvdXApCiAgICAgICAgIGdyb3Vw
ID0gUmFkaW9CdXR0b25Hcm91cDo6Y3JlYXRlKCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBj
YmFhYTRlZmVjMDE3YjM2MjJiNjg0OTRjZGU0ZjE5MzFjY2FiZDhmLi5jNWNiM2FkOWY2ZWFiNzhk
ODllNWQ2N2VhOWM0MzUyMzIyOTdlMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
TGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBDaGlsZExpc3RN
dXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6d2lsbFJlbW92ZUNoaWxk
KE5vZGUqIHQKIAogdm9pZCBDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxh
dGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKIHsKLSAgICBw
YWlyPFNjb3BpbmdMZXZlbE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fc2NvcGluZ0xl
dmVscy5hZGQodGFyZ2V0LCAxKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAg
KysocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIFNjb3BpbmdMZXZlbE1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fc2NvcGluZ0xldmVscy5hZGQodGFyZ2V0LCAxKTsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgICsrKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMWU0MjRm
Nzg3YWZiMzE4ZmU0ZjMxZTIwMWE0YmMwZjdmZGY0YTk4My4uMDdkMDBmNzc0NDFmNTZiMGYxMmE3
ZDljNjY5ZDQyYzljMTVjYmVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTIxLDcg
KzQ1MjEsNyBAQCBIVE1MQWxsQ29sbGVjdGlvbiogRG9jdW1lbnQ6OmFsbCgpCiAKIEhUTUxDb2xs
ZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX3dp
bmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cikuZmlyc3Qt
PnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1f
d2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVy
YXRvci0+c2Vjb25kOwogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9
IEhUTUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUp
OwogICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpOwpAQCAtNDUyOSw3ICs0NTI5LDcgQEAgSFRN
TENvbGxlY3Rpb24qIERvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rp
b24+JiBjb2xsZWN0aW9uID0gbV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1l
LmltcGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xs
ZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQo
bmFtZS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjb2xsZWN0
aW9uKQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVhdGUodGhp
cywgRG9jdW1lbnROYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQo
KTsKQEAgLTQ5MjIsNyArNDkyMiw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIERvY3VtZW50
OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QKIAogSFRNTENh
bnZhc0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3ND
YW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwg
MCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIGVsZW1lbnQg
PSBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBlbGVtZW50Lmdl
dCgpOwpAQCAtNTcyNSwxMiArNTcyNSwxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVu
dDo6Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBlTmFtZXMpCiAgICAgLy8gSW4gdGhpcyBjYXNl
IHdlIG5lZWQgdG8gY3JlYXRlIGFuIHVuaXF1ZSBzdHJpbmcgaWRlbnRpZmllciB0byBtYXAgc3Vj
aCByZXF1ZXN0IGluIHRoZSBjYWNoZS4KICAgICBTdHJpbmcgbG9jYWxUeXBlTmFtZXMgPSB0eXBl
TmFtZXMuaXNOdWxsKCkgPyBTdHJpbmcoImh0dHA6Ly93ZWJraXQub3JnL21pY3JvZGF0YS91bmRl
ZmluZWRJdGVtVHlwZSIpIDogdHlwZU5hbWVzOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0
YTo6TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG5vZGVM
aXN0cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlz
dD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVEYXRhOjpNaWNyb0Rh
dGFJdGVtTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbm9kZUxpc3RzLT5tX21pY3JvRGF0
YUl0ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPE1pY3JvRGF0YUl0ZW1MaXN0PiBsaXN0ID0g
TWljcm9EYXRhSXRlbUxpc3Q6OmNyZWF0ZSh0aGlzLCB0eXBlTmFtZXMpOwotICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDViODk5YjNmNTc4YTI3NDM5ODI0
ODU5OGI5ZDI5YWQ5ODhmMDAzNmUuLjU0OTQwODI1MjhiMjkzMzVlMGM1Mzc3ZTcwYjM0ZDc0ZDU1
MjI1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIGJvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChl
dmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQo
ZXZlbnQpLnNlY29uZDsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2
ZW50KS5pc05ld0VudHJ5OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsg
Ly8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KICAgICAKICAg
ICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQo
UGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQoKSkuc2Vj
b25kKQorICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5n
ZXQoKSkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsRXZlbnQtPnNl
dFRhcmdldCh0YXJnZXQpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1
ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBm
b3Igd2hlcmUgd2Ugc2hvdWxkIHN0b3AuCiAgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250
YWlucygwKSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5zZWNv
bmQ7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5pc05ld0VudHJ5
OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5v
dCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KIAogICAgIFJlZlB0cjxEb2N1bWVudEV2
ZW50UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHAKaW5kZXggYmNiMjNiNDk2MmY2NDY2YmI2MWI4YWViYWZhNDA1ZmVlODhlOTMw
My4uMDgyYWEwNzQwYTcxY2NkZjUwZTFkNDJkMjNkMzE3ZTYzYWYyZjRkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAgLTY5LDE0ICs2OSwxNCBAQCB2b2lk
IERvY3VtZW50T3JkZXJlZE1hcDo6YWRkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCog
ZWxlbWVudCkKICAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGtleSkpIHsKICAg
ICAgICAgLy8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBhbHJlYWR5IGluIG1fZHVwbGljYXRl
Q291bnRzLCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCiAgICAgICAgIC8vIGFsc28gbm90IGFscmVh
ZHkgaW4gbV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRoYXQgYWRkIHN1Y2NlZWRzLCB3ZSdy
ZSBkb25lLgotICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1f
bWFwLmFkZChrZXksIGVsZW1lbnQpOwotICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkKKyAg
ICAgICAgTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgZWxlbWVudCk7
CisgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAvLyBUaGUgYWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2Fj
aGVkIGluIG1fbWFwLgogICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0
aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcAogICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBr
ZXkgc28gZ2V0IHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgotICAgICAg
ICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGFk
ZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRo
IHRoaXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ck1hcC5jcHAKaW5kZXggNzc0ZTY2NTc0YTZiY2MxZGVjZmE5NjY5NjNkYmE5NjBhYTk5YzQ0OS4u
YzFmZDRkN2M5NTdhNjRiZmY3ODhmOTAxZTYxZGUwMWNhMDkyMjc3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTM0LDExICsxMzQsMTEgQEAgYm9vbCBFdmVu
dExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW4KICAgICB9CiAKICAgICBpZiAobV9oYXNoTWFwKSB7Ci0gICAgICAgIHBh
aXI8RXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2hhc2hN
YXAtPmFkZChldmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkK
LSAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IEV2ZW50TGlz
dGVuZXJWZWN0b3IpOworICAgICAgICBFdmVudExpc3RlbmVySGFzaE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1faGFzaE1hcC0+YWRkKGV2ZW50VHlwZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
YWRvcHRQdHIobmV3IEV2ZW50TGlzdGVuZXJWZWN0b3IpOwogCi0gICAgICAgIHJldHVybiBhZGRM
aXN0ZW5lclRvVmVjdG9yKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSk7CisgICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKHJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAg
aWYgKCFtX3NpbmdsZUV2ZW50TGlzdGVuZXJWZWN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0
ODBlNWJiN2Y0ZWJmNzA5MDFlZTEyOGQwN2M4NTcwNTBkODQwNDc0Li4zMzZlMWJmN2FiMjRmM2Q0
ODgwYmExNTc2ZGZkZjIzN2ViY2EyMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUsOSArMTg1
LDkgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAKICAgICAgICAgICAgICAgICAvLyBU
YWcgc3RhdHMKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIHNp
emVfdD46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+
dGFnTmFtZSgpLCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kKys7CisgICAgICAgICAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIHNpemVfdD46OkFkZFJlc3VsdCByZXN1bHQgPSBwZXJUYWdDb3VudC5h
ZGQoZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCsr
OwogCiAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVE
YXRhID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVuZ3RoKCk7CkBAIC0xNjEyLDEyICsxNjEyLDEy
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0
b20gPSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNo
ZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVM
aXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKLSAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVM
aXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05v
ZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVO
b2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7
CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
VGFnTm9kZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxUYWdO
b2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywgc3RhckF0b20sIGxvY2Fs
TmFtZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOyAgIAogfQogCkBAIC0xNjM1LDM2ICsxNjM1LDM2IEBAIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVCiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRvbSA9IG5hbWU7CiAKLSAgICBw
YWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZU5TOjpBZGRS
ZXN1bHQgcmVzdWx0CiAgICAgICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3Rz
KHRoaXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bG9jYWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOwotICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5m
aXJzdC0+c2Vjb25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAg
ICAgUmVmUHRyPFRhZ05vZGVMaXN0PiBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBu
YW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5TmFtZShj
b25zdCBTdHJpbmcmIGVsZW1lbnROYW1lKQogewotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6
Ok5hbWVOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZW5zdXJlUmFyZURh
dGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX25hbWVOb2RlTGlzdENhY2hlLmFkZChlbGVt
ZW50TmFtZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFz
c1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05v
ZGVEYXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxl
bWVudE5hbWUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBS
ZWZQdHI8TmFtZU5vZGVMaXN0PiBsaXN0ID0gTmFtZU5vZGVMaXN0OjpjcmVhdGUodGhpcywgZWxl
bWVudE5hbWUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05v
ZGVEYXRhOjpDbGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBO
b2RlTGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0CiAg
ICAgICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNz
Tm9kZUxpc3RDYWNoZS5hZGQoY2xhc3NOYW1lcywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25k
KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNv
bmQpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVm
UHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8Q2xh
c3NOb2RlTGlzdD4gbGlzdCA9IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBjbGFzc05hbWVz
KTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
IH0KIApAQCAtMjU5MSw5ICsyNTkxLDkgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNl
cnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogICAgICAg
ICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gcmVnaXN0
cnktPmF0KGkpLmdldCgpOwogICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxkUmVj
ZWl2ZU11dGF0aW9uRnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAgICAg
ICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucyA9IHJl
Z2lzdHJhdGlvbi0+ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNo
TWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cz46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+
b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IGRl
bGl2ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQg
PSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25z
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CiAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjYwNCw5ICsyNjA0LDkgQEAgdm9pZCBOb2RlOjpj
b2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIqLAogICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVn
aXN0cmF0aW9uID0gKml0ZXI7CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRS
ZWNlaXZlTXV0YXRpb25Gcm9tKHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAg
ICAgICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0g
cmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhh
c2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9u
LT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0g
ZGVsaXZlcnlPcHRpb25zOworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25P
YnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlv
bnMpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmNwcAppbmRleCBhNzQyNjI5NWVmMDY0ZWJlOWMwZmFkZWYwZjY3MDFkNTE2NThkYTNlLi5lMDg1
NTA3MGE3Y2IzMjUzNGNjYmY4YWI4ZDA1MjY2N2RhMzE5ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5p
dChjb25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0b21pY1N0cmluZyYgbCwgY29uc3QgQXRv
CiAgICAgaWYgKCFnTmFtZUNhY2hlKQogICAgICAgICBnTmFtZUNhY2hlID0gbmV3IFFOYW1lU2V0
OwogICAgIFF1YWxpZmllZE5hbWVDb21wb25lbnRzIGNvbXBvbmVudHMgPSB7IHAuaW1wbCgpLCBs
LmltcGwoKSwgbi5pc0VtcHR5KCkgPyBudWxsQXRvbS5pbXBsKCkgOiBuLmltcGwoKSB9OwotICAg
IHBhaXI8UU5hbWVTZXQ6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnTmFtZUNhY2hlLT5h
ZGQ8UXVhbGlmaWVkTmFtZUNvbXBvbmVudHMsIFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I+KGNv
bXBvbmVudHMpOwotICAgIG1faW1wbCA9ICphZGRSZXN1bHQuZmlyc3Q7ICAgIAotICAgIGlmICgh
YWRkUmVzdWx0LnNlY29uZCkKKyAgICBRTmFtZVNldDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdO
YW1lQ2FjaGUtPmFkZDxRdWFsaWZpZWROYW1lQ29tcG9uZW50cywgUU5hbWVDb21wb25lbnRzVHJh
bnNsYXRvcj4oY29tcG9uZW50cyk7CisgICAgbV9pbXBsID0gKmFkZFJlc3VsdC5pdGVyYXRvcjsK
KyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBtX2ltcGwtPnJlZigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggMDM1YzRhMjFh
NzJjOWNkODQwZTBiMjk2MmNlNjk3NmFkODU2YmNiZS4uOWNjZTdkOTViNWUxMDQ0M2MwM2VkYTVi
NzJmMTEyYzU3MDUyZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3Bs
aXRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cApAQCAtMTUwLDcgKzE1MCw3IEBAIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0
cmluZ0RhdGEoKQogCiBQYXNzUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0
U3RyaW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogewotICAgIFNw
YWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAw
KS5maXJzdC0+c2Vjb25kOworICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJl
ZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZGF0
YSkgewogICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZyk7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmNwcAppbmRleCA1NzYxZjUwNmU5MDEwOTE3MzY0NmMxYzkzN2M1MTA3NjNiMWFjMjYzLi4yMjhh
YTg2ZTM1YWE2MzEzODgwOGY5MGVjYzk2OWMyNmRhY2M0MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojp1
cGRhdGVBdHRyaWJ1dGVTdHlsZSgpCiAKICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTo6
aXRlcmF0b3IgY2FjaGVJdGVyYXRvcjsKICAgICBpZiAoY2FjaGVIYXNoKSB7Ci0gICAgICAgIGNh
Y2hlSXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gs
IG51bGxwdHIpLmZpcnN0OworICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0
cmlidXRlQ2FjaGUoKS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKICAgICAgICAg
aWYgKGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQtPmtleSAh
PSBjYWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7CiAgICAgfSBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IGQxMWZlZTEyMTgxNWM3Y2ZjN2M5
OWQwMWNlNTQ1NTg3YmUzY2IxYjYuLmMzYTcxNTNjYWU0NWFkNjAxYTg1Yzg1MDk5ZTNmMTUxODk5
NzI3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0zNTksNyAr
MzU5LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246OnRhZ3MoY29uc3Qg
U3RyaW5nJiBuYW1lKQogCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjphcHBlbmQoTm9kZUNhY2hlTWFw
JiBtYXAsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50KiBlbGVtZW50KQogewotICAg
IE93blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1hcC5hZGQoa2V5LmltcGwoKSwg
bnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2
ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RWxl
bWVudCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjVkY2EzM2NlNzA0ODhkYjVhODNj
ZDlmOTNlZDVjZDFmYThhOWQ2Ny4uZDdmY2I5YWFjMDhlODg1MzY4NmNmZGRiNTFmYTFlMTBkMjk5
NDljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
QEAgLTIzMywxMiArMjMzLDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8
T3duUHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0CiAgICAgRGlmZlRh
YmxlIG9sZFRhYmxlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdMaXN0LnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBuZXdUYWJsZS5hZGQo
bmV3TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgRGlm
ZlRhYmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZl
Y3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsK
ICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZExpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0
W2ldLT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0OworICAgICAgICBEaWZmVGFibGU6
Oml0ZXJhdG9yIGl0ID0gb2xkVGFibGUuYWRkKG9sZExpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNp
emVfdD4oKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5k
ZXggZGNhODFjYWNhYzZiMzg3ZGVlYTZmOTM5N2MwYWNlZTI0MmY2MDY2OS4uMDY0Yjg2MmM5MGI3
NTVlOWY4M2IyYTBmN2NhODFlNDFmMTU0MTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBpbmxpbmUg
dm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkKICAgICBk
b3VibGUgbWF0Y2hUaW1lTXMgPSBXVEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNo
RGF0YS5zdGFydFRpbWU7CiAgICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1z
OwogCi0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMo
bV9jdXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnRv
dGFsVGltZSArPSBtYXRjaFRpbWVNczsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuaGl0
cyArPSAxOworICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9y
dWxlTWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJl
bnRNYXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLnRv
dGFsVGltZSArPSBtYXRjaFRpbWVNczsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
aGl0cyArPSAxOwogICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kLm1hdGNoZXMgKz0gMTsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLm1hdGNoZXMgKz0gMTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGIzNTJiZDhhNzE1ZTFlMTkxMmM4OTBjZWZk
YzhiNDA2NGRlMjdmNDQuLjBlY2ZkMDk3Mzk4MDNhOWNlNTE4NmU0MGUzNzQwZTIwYzM4NzJlZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApA
QCAtODgxLDcgKzg4MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2go
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltCiAgICAgfQogCiAgICAg
KnNlYXJjaElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7Ci0gICAg
U2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgq
c2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5maXJzdDsKKyAgICBTZWFyY2hSZXN1
bHRzOjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJZCwg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOwogCiAgICAgZm9yIChMaXN0SGFzaFNl
dDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJl
c3VsdENvbGxlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBw
ZW5kKCppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggZjJhYWI0YjdmNGY1NzFlY2ZlZGQ5MzI4YTA0NzgxNTkwZDdh
Y2JhOS4uOTI0YmUzODQyOWY3NDA5NjIzYjI2Nzc5MmJhZDA0NTYzM2RjODhmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApA
QCAtMzMzLDcgKzMzMyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAKICAgICBCcmVha3Bv
aW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJC
cmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SWRzLmZpbmQoYnJlYWtwb2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3IgPT0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5l
bmQoKSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFr
cG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3Rv
cjxTdHJpbmc+KCkpLmZpcnN0OworICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVy
YXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFr
cG9pbnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuaXRlcmF0b3I7CiAgICAgZGVidWdTZXJ2ZXJCcmVh
a3BvaW50SWRzSXRlcmF0b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQp
OwogCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9u
ID0gVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBiM2Y2MTcxOTNiZjQ0OWIyZTYz
ZTlmMzJiNWE3MzBkYjYwZDgyNDI2Li5jOTFhZDgyZTY1YmRjMGYxZjlmZTE3NzQ2MzA1YzlhM2Rm
ZWI5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBA
IC0yODIsMjEgKzI4MiwyMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFN0cmlu
Zyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9k
YXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZh
bHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsK
LSAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEu
c2V0KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1l
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAgIEFTU0VS
VCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBp
ZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5h
cHBlbmQobmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZTYyMjljNDRkNTQ2MDBjZjU0
YTZjYjU0Y2EzNmJhMzgyMWVkZTIwNi4uNGU0MjkzOGJiNWQ1N2Q2MTJiZGYzNTBjZjE5MzQwNDAy
NDI3OWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwNjIsMTAgKzEwNjIsMTAgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25l
ZCB0eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHBhaXI8RW50cnlNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUp
OworICAgIEVudHJ5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQo
dXJsLCB0eXBlKTsKICAgICAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kIHw9IHR5cGU7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gdHlwZTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggMTZhN2NjZjJkMzVmNjRlZDRiMGU1NzMyMTBhMzY3NTgzNTc0NGRmMS4uNWQxMDNi
MmZmN2I0Y2JhNTRlMDM3YmE2Yzg3OTYyMzA0ZDA1ZWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogewogICAgIEFT
U0VSVCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCi0gICAgc3RkOjpw
YWlyPENhY2hlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NhY2hlc0luTWVt
b3J5LmFkZChtYW5pZmVzdFVSTCwgMCk7CisgICAgQ2FjaGVHcm91cE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0VVJMLCAwKTsKICAgICAKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAgIC8v
IExvb2sgdXAgdGhlIGdyb3VwIGluIHRoZSBkYXRhYmFzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0
ZUNhY2hlR3JvdXAoY29uc3QgS1VSCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZCh1cmxIb3N0
SGFzaChtYW5pZmVzdFVSTCkpOwogICAgIH0KICAgICAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCA9IGdyb3VwOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gZ3JvdXA7CiAgICAgCiAg
ICAgcmV0dXJuIGdyb3VwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IGE3MWU4NTE1NDZmYzIwYWI4N2NhNzcyMDU1NjE3NGZjNjY2MmVlN2MuLjI5MzY0Y2Q0MTNmYWRm
OTQ5ZGNlNTBkNTYyZDljMzk4ODRhMzdkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTM1MTYsNyArMzUxNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIEVuc3Vy
ZSB0aGlzIHRhcmdldCdzIHRvdWNoIGxpc3QgZXhpc3RzLCBldmVuIGlmIGl0IGVuZHMgdXAgZW1w
dHksIHNvIGl0IGNhbiBhbHdheXMgYmUgcGFzc2VkIHRvIFRvdWNoRXZlbnQ6OkNyZWF0ZSBiZWxv
dy4KICAgICAgICAgVGFyZ2V0VG91Y2hlc01hcDo6aXRlcmF0b3IgdGFyZ2V0VG91Y2hlc0l0ZXJh
dG9yID0gdG91Y2hlc0J5VGFyZ2V0LmZpbmQodG91Y2hUYXJnZXQuZ2V0KCkpOwogICAgICAgICBp
ZiAodGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID09IHRvdWNoZXNCeVRhcmdldC5lbmQoKSkKLSAgICAg
ICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5zZXQodG91Y2hU
YXJnZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLmZpcnN0OworICAgICAgICAgICAgdGFy
Z2V0VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0b3VjaFRhcmdldC5nZXQo
KSwgVG91Y2hMaXN0OjpjcmVhdGUoKSkuaXRlcmF0b3I7CiAKICAgICAgICAgLy8gdG91Y2hlcyBh
bmQgdGFyZ2V0VG91Y2hlcyBzaG91bGQgb25seSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRv
dWNoZXMgc3RpbGwgb24gdGhlIHNjcmVlbiwgc28gaWYgdGhpcyBwb2ludCBpcwogICAgICAgICAv
LyByZWxlYXNlZCBvciBjYW5jZWxsZWQgaXQgd2lsbCBvbmx5IGFwcGVhciBpbiB0aGUgY2hhbmdl
ZFRvdWNoZXMgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA3MzFlMWZjMDc5
YjVmZTlmYjM5MDBmYjU3YmYzNmUxZDk2NmE4ZmIyLi5mOTM5YzliZmQyYTM3NjE5ZjY1NzdiZjdk
MjVmZGYxNzJiM2EwNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC05MCwxNSAr
OTAsMTUgQEAgUGFnZUdyb3VwKiBQYWdlR3JvdXA6OnBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAgICAgIHBhZ2VHcm91cHMgPSBuZXcg
UGFnZUdyb3VwTWFwOwogCi0gICAgcGFpcjxQYWdlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKKyAgICBQYWdlR3JvdXBNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKIAotICAg
IGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNv
bmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBQYWdlR3JvdXAoZ3JvdXBO
YW1lKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
bmV3IFBhZ2VHcm91cChncm91cE5hbWUpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmly
c3QtPnNlY29uZCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFTU0VS
VChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoTGlua0hh
c2ggaGFzaCkKIHsKICAgICBBU1NFUlQoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwogI2lmICFQ
TEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gp
LnNlY29uZCkKKyAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLmlzTmV3RW50
cnkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5n
ZWQodGhpcywgaGFzaCk7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291
cmMKICAgICBPd25QdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2Vy
U2NyaXB0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwg
aW5qZWN0ZWRGcmFtZXMpKTsKICAgICBpZiAoIW1fdXNlclNjcmlwdHMpCiAgICAgICAgIG1fdXNl
clNjcmlwdHMgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdE1hcCk7Ci0gICAgT3duUHRyPFVzZXJT
Y3JpcHRWZWN0b3I+JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwg
bnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNj
cmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNjcmlwdHNJbldv
cmxkID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlwdHNJbldvcmxk
LT5hcHBlbmQodXNlclNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQg
UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCwgY29uc3QgU3RyaW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVT
aGVldCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgd2hpdGVsaXN0
LCBibGFja2xpc3QsIGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICghbV91c2VyU3R5
bGVTaGVldHMpCiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJT
dHlsZVNoZWV0TWFwKTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNo
ZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5maXJz
dC0+c2Vjb25kOworICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRz
SW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgaWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCiAgICAgICAgIHN0eWxlU2hl
ZXRzSW5Xb3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldFZlY3Rvcik7CiAgICAgc3R5
bGVTaGVldHNJbldvcmxkLT5hcHBlbmQodXNlclN0eWxlU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggOTMxZjI2MDNmZDRmMjIxYjRiNWRl
M2FjZGMzN2Q5NzZkMTNkZjIyNy4uYzJhNWFiMTE0MzVlZjZkYjA1NzY4Yzc2Y2EwMzU3YjU2MjU4
MzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTEzMSwxMSAr
MTMxLDExIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgICAgIHJldHVybjsKIAogICAg
IFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBwYWly
PE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01h
cCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3QpOworICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdp
bkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihu
ZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKIAotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCog
bGlzdCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIE9yaWdpbkFjY2Vzc1doaXRl
TGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAgIGxpc3QtPmFw
cGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRv
bWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxs
b3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggZGQwNTQ2MThk
MGY4MGE4MDI2MjY4NWQ4YjBmNGE5OTdiYjEzYjUzOC4uZGE2M2FmYTY0ZGNjNTEyYjQ1N2IxYTBj
NTZhOTkyYTY3ZGE0OWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFk
anVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNw
cApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9k
ZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAg
ICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBD
b250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVz
cG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQgbGF0ZXIuCiAgICAgICAgICAgICAgICAgZm9yICh2
aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2Rl
OyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcGFpcjxIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJl
c3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgICAg
IEhhc2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25k
ZXJzU2V0LmFkZCh2aXNpdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRleCA0YjgyM2IxMmI3OGI2NWRj
Yzc1YmMxMTE3NjI2ODE0MDY2ZjI4NWY5Li40YmM3YzJlNjA3ZWFiM2UwYjQ3MzYwYTYyMjZlMWEy
N2E1MjA4YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQ
cm9wZXJ0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlz
dFBsYW46OndyaXRlSW50ZWdlcihpbnQgaW50ZWdlcikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgbV9pbnRlZ2VyWmVyb09iamVjdFJlZmVyZW5jZSA9IG1fY3VycmVudE9iamVjdFJlZmVy
ZW5jZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1faW50ZWdlcnMuYWRkKGludGVnZXIs
IG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuc2Vjb25kKQorICAgICAgICBpZiAoIW1faW50ZWdl
cnMuYWRkKGludGVnZXIsIG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuaXNOZXdFbnRyeSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgKyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7
CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUlu
dGVnZXIoaW50IGludGVnZXIpCiB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgICsrbV9jdXJyZW50QWdncmVnYXRlU2l6
ZTsKLSAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVu
Y2UpLnNlY29uZCkKKyAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmpl
Y3RSZWZlcmVuY2UpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKICAgICArK21fY3VycmVu
dE9iamVjdFJlZmVyZW5jZTsKICAgICB3cml0ZVN0cmluZ09iamVjdChzdHJpbmcpOwpAQCAtMjI0
LDEyICsyMjQsMTIgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXJB
cnJheShjb25zdCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplX3Qgc2F2
ZWRBZ2dyZWdhdGVTaXplID0gKyttX2N1cnJlbnRBZ2dyZWdhdGVTaXplOwogICAgIEFTU0VSVChz
aXplKTsKLSAgICBwYWlyPEludGVnZXJBcnJheU1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJzLCBzaXplKSwgMCk7
Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEludGVnZXJBcnJheU1hcDo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJz
LCBzaXplKSwgMCk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0
dXJuOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3cml0
ZUludGVnZXIoaW50ZWdlcnNbaV0pOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbV9j
dXJyZW50T2JqZWN0UmVmZXJlbmNlKys7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
PSBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UrKzsKICAgICB3cml0ZUFycmF5T2JqZWN0KHNpemUp
OwogICAgIG1fY3VycmVudEFnZ3JlZ2F0ZVNpemUgPSBzYXZlZEFnZ3JlZ2F0ZVNpemU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclRpbGVyLmNwcAppbmRleCAxYjVhNzMxOWU0MmQ5ZGYxNGJkMjU5NTExMzE5MTYyZTg3
MTVjMTc1Li5kNTE3YWFhN2I0MDI0NDg5MzJkZDQyYmY5ZGFiNDBkMTAyYThkMmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlci5jcHAKQEAgLTQyOCwxOCArNDI4LDE4IEBAIHZvaWQgTGF5ZXJUaWxlcjo6cHJv
Y2Vzc1RleHR1cmVKb2IoY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpv
YnNNCiB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRleCwg
Y29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpvYnNNYXApCiB7CiAgICAg
Ly8gSGFzaE1hcDo6YWRkIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaXRlcmF0b3IgZXZlbiB0aGUg
a2V5IGFscmVhZHkgZXhpc3RzLgotICAgIHBhaXI8VGlsZUpvYnNNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSB0aWxlSm9ic01hcC5hZGQoaW5kZXgsICZqb2IpOworICAgIFRpbGVKb2JzTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9iKTsKIAogICAg
IC8vIFN1Y2Nlc3NmdWxseSBhZGRlZCB0aGUgbmV3IGpvYi4KLSAgICBpZiAocmVzdWx0LnNlY29u
ZCkKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IEluIHRoaXMgY2FzZSB3ZSBsZWF2ZSB0aGUgcHJldmlvdXMgam9iLgotICAgIGlmIChqb2IubV90
eXBlID09IFRleHR1cmVKb2I6OkRpcnR5Q29udGVudHMgJiYgcmVzdWx0LmZpcnN0LT5zZWNvbmQt
Pm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAgaWYgKGpvYi5tX3R5
cGUgPT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC0+bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICByZXN1bHQuZmlyc3Qt
PnNlY29uZCA9ICZqb2I7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSAmam9iOwogfQog
CiB2b2lkIExheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29uc3Qg
VGV4dHVyZUpvYiYgam9iLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IGY2Y2NiOTVkN2U3MTBhM2MxM2Y2MWYyMjAzNjc4MGViZWI2Nzc1YjMuLjFjMDFiNjljODIy
ZjE0MmIzMzY5YjU5NTc3MjFhNzQyMWIzZTI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQ4OCwx
NiArMjQ4OCwxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbAogICAgIC8vIEFkZCB3aXRoIGEg
ZHVtbXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9u
LCBhbmQgYSBib29sZWFuIHRoYXQgdGVsbHMKICAgICAvLyB1cyB3aGV0aGVyIHRoZXJlJ3MgYW4g
aXRlbSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1cHMuCiAgICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1hcDo6aXRlcmF0
b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKLSAgICBp
ZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICBMYXllck1hcDo6QWRkUmVzdWx0IGFkZFJlc3Vs
dCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgIC8vIFZhbHVlIHdhcyBub3QgYWRkZWQsIHNvIGl0IGV4aXN0cyBh
bHJlYWR5LgotICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmdl
dCgpOworICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdl
dCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3Vy
Y2VMYXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1bHRMYXll
ci0+c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9uZUlE
WzBVXSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAgICAgIGFk
ZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CisgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3Vs
dExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCmluZGV4IDAwYzYzMDgwZGZjNzdl
NGI4YzQyYjE2ZTZkYTY4MDk5OTkxNzdkYTguLmI0ZmVhZWU2ODJkOGM0NDU5YTgyYmZhNmRkOWRl
ZjY5NjZhM2FiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6TGF5ZXJDaGFuZ2VzRmx1c2hlcigpCiAKIHZvaWQg
TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbihBYnN0cmFj
dENBQ0ZMYXllclRyZWVIb3N0KiBob3N0KQogewotICAgIGlmICghbV9ob3N0c1dpdGhDaGFuZ2Vz
VG9GbHVzaC5hZGQoaG9zdCkuc2Vjb25kIHx8IG1faG9vaykKKyAgICBpZiAoIW1faG9zdHNXaXRo
Q2hhbmdlc1RvRmx1c2guYWRkKGhvc3QpLmlzTmV3RW50cnkgfHwgbV9ob29rKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBzZXRIb29rKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5j
cHAKaW5kZXggNzExYjg5NmFjNjEyODgzNjJlZDcyZWRmNzJhNDcwOTJmZTcyMjRiZS4uY2M1MmM1
MmViNzA1NzgyZGUxZjk2OGRjODAzYzQ1ZTRmMmFlMjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGls
c0Nocm9taXVtV2luLmNwcApAQCAtNDE0LDggKzQxNCw4IEBAIGJvb2wgZ2V0RGVyaXZlZEZvbnRE
YXRhKGNvbnN0IFVDaGFyKiBmYW1pbHksCiAgICAgICAgIC8vIGEgZm9udCBldmVuIGlmIHRoZXJl
J3Mgbm8gZm9udCBtYXRjaGluZyB0aGUgbmFtZS4gTmVlZCB0bwogICAgICAgICAvLyBjaGVjayBp
dCBhZ2FpbnN0IHdoYXQgd2UgYWN0dWFsbHkgd2FudCAoYXMgaXMgZG9uZSBpbgogICAgICAgICAv
LyBGb250Q2FjaGVXaW4uY3BwKQotICAgICAgICBwYWlyPEZvbnREYXRhQ2FjaGU6Oml0ZXJhdG9y
LCBib29sPiBlbnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnREYXRhKCkpOwot
ICAgICAgICBkZXJpdmVkID0gJmVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIEZvbnREYXRh
Q2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnRE
YXRhKCkpOworICAgICAgICBkZXJpdmVkID0gJmVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
ICAgIGRlcml2ZWQtPmhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KGxvZ2ZvbnQpOwogICAgICAg
ICAvLyBHZXRBc2NlbnQgbWF5IHJldHVybiBrVW5kZWZpbmVkQXNjZW50LCBidXQgd2Ugc3RpbGwg
d2FudCB0bwogICAgICAgICAvLyBjYWNoZSBpdCBzbyB0aGF0IHdlIHdvbid0IGhhdmUgdG8gY2Fs
bCBDcmVhdGVGb250SW5kaXJlY3Qgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDM3MmEwZTA4ZThmM2IyN2M3NDVlYjQ1YjE1MjM1
Mzk0ZTcyMDI2Y2IuLjk4ZWYyNTRhYTk4ZjU4MjI4N2YyNDYxODIyNzcwNjg2NDRmYzRmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTMxMSw3ICszMTEsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFydEFu
aW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdQogICAgICAgICAgICAgLy8g
b2YgYmxvY2tlZCBwcm9wZXJ0aWVzLgogICAgICAgICAgICAgYm9vbCBudWxsSW50ZXJzZWN0aW9u
ID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoVGFyZ2V0UHJvcGVydGllczo6aXRlcmF0b3IgcEl0
ZXIgPSBlbnF1ZXVlZFByb3BlcnRpZXMuYmVnaW4oKTsgcEl0ZXIgIT0gZW5xdWV1ZWRQcm9wZXJ0
aWVzLmVuZCgpOyArK3BJdGVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9ja2VkUHJvcGVy
dGllcy5hZGQoKnBJdGVyKS5zZWNvbmQpCisgICAgICAgICAgICAgICAgaWYgKCFibG9ja2VkUHJv
cGVydGllcy5hZGQoKnBJdGVyKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICBudWxs
SW50ZXJzZWN0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNV
SS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQVRTVUkuY3BwCmluZGV4IDA0MzdiY2RmYzA5Yjk2N2RhN2ZlMTk2ZjI3YmYyZTBl
NzEyMmVkOTkuLmJlOWY3NDEwNGZlNzQzNDQ1NzE1NjQxNjNjZjdhYWQ3MGUwNzJjNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJBVFNVSS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcApAQCAtMjc4LDE1ICsyNzgsMTUgQEAg
c3RhdGljIHZvaWQgZGlzYWJsZUxpZ2F0dXJlcyhjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERh
dGEsIEFUU1VTdHlsZSBhdHN1U3R5bGUKIHN0YXRpYyBBVFNVU3R5bGUgaW5pdGlhbGl6ZUFUU1VT
dHlsZShjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIFR5cGVzZXR0aW5nRmVhdHVyZXMg
dHlwZXNldHRpbmdGZWF0dXJlcykKIHsKICAgICB1bnNpZ25lZCBrZXkgPSB0eXBlc2V0dGluZ0Zl
YXR1cmVzICsgMTsKLSAgICBwYWlyPEhhc2hNYXA8dW5zaWduZWQsIEFUU1VTdHlsZT46Oml0ZXJh
dG9yLCBib29sPiBhZGRSZXN1bHQgPSBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRkKGtleSwg
MCk7Ci0gICAgQVRTVVN0eWxlJiBhdHN1U3R5bGUgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsK
LSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0
eWxlPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5hZGQo
a2V5LCAwKTsKKyAgICBBVFNVU3R5bGUmIGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBh
dHN1U3R5bGU7CiAKICAgICBBVFNVRm9udElEIGZvbnRJRCA9IGZvbnREYXRhLT5wbGF0Zm9ybURh
dGEoKS5jdEZvbnQoKSA/IENURm9udEdldFBsYXRmb3JtRm9udChmb250RGF0YS0+cGxhdGZvcm1E
YXRhKCkuY3RGb250KCksIDApIDogMDsKICAgICBpZiAoIWZvbnRJRCkgewogICAgICAgICBMT0df
RVJST1IoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3IgJXAiLCBmb250RGF0YS0+cGxhdGZv
cm1EYXRhKCkuZm9udCgpKTsKLSAgICAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLnJlbW92
ZShhZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAucmVt
b3ZlKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9u
dERhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggODMyYmI5ZGRmOGRhMTI5OGZkMzkzMjU2
Mjg0ZDA0ZTYzNThmMjQyNi4uMDUxOTM3NDJjNTg1MmRiZTljOWNlZDY0YjlhMDdhYWQyYzFlYTQ3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBs
ZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAtNDIsOSArNDIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBDRkRpY3Rpb25hcnlSZWYgU2ltcGxlRm9udERhdGE6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyhUeXBlc2V0dGluZ0ZlYXR1cmVzIHR5cGVzZXR0aW5nRmVhdHVyZXMsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKIHsKICAgICB1bnNpZ25lZCBrZXkgPSB0
eXBlc2V0dGluZ0ZlYXR1cmVzICsgMTsKLSAgICBwYWlyPEhhc2hNYXA8dW5zaWduZWQsIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+ID46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX0NG
U3RyaW5nQXR0cmlidXRlcy5hZGQoa2V5LCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBh
ZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAg
SGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+KCkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRyaWJ1
dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzRGljdGlvbmFyeS5n
ZXQoKTsKICAgICAKICAgICBib29sIHRyZWF0TGluZUFzVmVydGljYWwgPSBvcmllbnRhdGlvbiA9
PSBWZXJ0aWNhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQppbmRleCA4ZjRhOTE5M2VmNGQ1MzI3MWJlNTRi
MGRjNWVmYmQ5ZGViYWJkYzQ1Li43NGIyNjg2ZDZjZTYwYmJmYTcwYWEwYjIyNTMzNWI5NjAzMjM2
NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2lt
cGxlRm9udERhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCkBAIC00NDAsOSArNDQwLDkgQEAgYm9vbCBTaW1wbGVG
b250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMKICAgICBpZiAoIW1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0
KQogICAgICAgICBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydCA9IGFkb3B0UHRy
KG5ldyBIYXNoTWFwPFN0cmluZywgYm9vbD4pOwogCi0gICAgcGFpcjxXVEY6Okhhc2hNYXA8U3Ry
aW5nLCBib29sPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fY29tYmluaW5nQ2hhcmFj
dGVyU2VxdWVuY2VTdXBwb3J0LT5hZGQoU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCksIGZhbHNl
KTsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBhZGRSZXN1bHQu
Zmlyc3QtPnNlY29uZDsKKyAgICBXVEY6Okhhc2hNYXA8U3RyaW5nLCBib29sPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0LT5hZGQoU3Ry
aW5nKGNoYXJhY3RlcnMsIGxlbmd0aCksIGZhbHNlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAg
ICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRvcHRDRiwgQ1RGb250Q29weUdyYXBoaWNz
Rm9udChwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkpOwogCkBAIC00NjIsNyArNDYyLDcgQEAg
Ym9vbCBTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2Uo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHRydWU7CisgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9y
bURhdGEuY3BwCmluZGV4IDY5MmZkNmQwZDFmMWRiODFhZDI5NzJhM2YzMzQzN2JlZjZmZTYzNWQu
LjE5NzkwYWQ0OWIzMzAzZGQ3YjYyYzdlN2EwYTgyMzY3N2I0Y2ZmNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9y
bURhdGEuY3BwCkBAIC0yODUsMTEgKzI4NSwxMSBAQCBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZvbnRE
YXRhPiBGaXhlZFNpemVGb250RGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaQog
c3RhdGljIFBhc3NSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+IGNyZWF0ZUZpeGVkU2l6ZUZvbnRE
YXRhKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCB1bnNpZ25lZCB3ZWlnaHQsIGJvb2wgaXRh
bGljKQogewogICAgIEZpeGVkU2l6ZUZvbnREYXRhS2V5IGtleShmYW1pbHksIHdlaWdodCwgaXRh
bGljKTsKLSAgICBwYWlyPEZpeGVkU2l6ZUZvbnRDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IGdfZml4ZWRTaXplRm9udENhY2hlLmFkZChrZXksIFJlZlB0cjxGaXhlZFNpemVGb250RGF0
YT4oKSk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kID0gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdlaWdodCwgaXRhbGljKTsK
KyAgICBGaXhlZFNpemVGb250Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnX2ZpeGVkU2l6ZUZv
bnRDYWNoZS5hZGQoa2V5LCBSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+KCkpOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBGaXhl
ZFNpemVGb250RGF0YTo6Y3JlYXRlKGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOwogCi0gICAgcmV0
dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogc3RhdGljIExPTkcgdG9HRElGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdl
aWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5j
cHAKaW5kZXggYTY2OWJjOGVmODUyM2Q0ODY2ZjFlYjgwYTI1MTIzMzAyYWQ0YzQ1Yi4uNzIwZjBm
ZDM2MDFhZDU1YzQxZjA0OGRhMzhlOTBiMTQwYzc4NDJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgc3Rh
dGljIFN0eWxlQ29udGV4dE1hcCYgc3R5bGVDb250ZXh0TWFwKCkKIAogc3RhdGljIEd0a1N0eWxl
Q29udGV4dCogZ2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiB7Ci0gICAgc3RkOjpw
YWlyPFN0eWxlQ29udGV4dE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0eWxlQ29udGV4
dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBTdHlsZUNvbnRleHRN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzdHlsZUNvbnRleHRNYXAoKS5hZGQod2lkZ2V0VHlwZSwg
MCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kLmdldCgpOwogCiAgICAgR3RrV2lkZ2V0UGF0aCogcGF0aCA9IGd0a193
aWRnZXRfcGF0aF9uZXcoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfYXBwZW5kX3R5cGUocGF0aCwg
d2lkZ2V0VHlwZSk7CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIEd0a1N0eWxlQ29udGV4dCog
Z2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRf
c2V0X3BhdGgoY29udGV4dC5nZXQoKSwgcGF0aCk7CiAgICAgZ3RrX3dpZGdldF9wYXRoX2ZyZWUo
cGF0aCk7CiAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGNvbnRleHQ7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSBjb250ZXh0OwogICAgIHJldHVybiBjb250ZXh0LmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFk
ZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmNwcAppbmRleCA0NGM1NjgxZmJiZDUzNDhiMjAxNDkzNTFmYTM2ODMyZDc5NTgyNjI4Li41MDA5
MWUxOWQzYWY1NmZmNGE4ZGYxNzViZjg5Nzg3MDA3NjE0MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0CiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5n
SGFzaD46OmdldChuYW1lKTsKIH0KIAotcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9v
bD4gSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK0hUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCBIVFRQSGVhZGVyTWFwOjphZGQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHJl
dHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjphZGQo
bmFtZSwgdmFsdWUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgSFRUUEhlYWRlck1hcDo6
Y29udGFpbnMoY29uc3QgY2hhciogbmFtZSkgY29uc3QKICAgICByZXR1cm4gZmluZDxjb25zdCBj
aGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRvcj4obmFtZSkgIT0gZW5kKCk7CiB9CiAK
LXBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhUVFBIZWFkZXJNYXA6OmFkZChj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorSFRUUEhlYWRlck1hcDo6QWRk
UmVzdWx0IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNl
Rm9sZGluZ0hhc2g+OjphZGQ8Y29uc3QgY2hhciosIENhc2VGb2xkaW5nQ1N0cmluZ1RyYW5zbGF0
b3I+KG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggMDIwNzFlMzYxMGMxZDRiNGZjZGY0ZDZjOTU5YjQ5Zjg3
ZjNhNWYxNS4uMTJiZGUwNjg5N2U3Y2UzZjNlYzkwMTJlMWMzN2ZkZmZlOGQ4OWMyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKQEAgLTUx
LDEyICs1MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBTdHJp
bmcgZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAKLSAgICAgICAgcGFpcjxp
dGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAvLyBBbHRlcm5hdGUgYWNjZXNzb3Jz
IHRoYXQgYXJlIGZhc3RlciB0aGFuIGNvbnZlcnRpbmcgdGhlIGNoYXIqIHRvIEF0b21pY1N0cmlu
ZyBmaXJzdC4KICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CiAgICAg
ICAgIFN0cmluZyBnZXQoY29uc3QgY2hhciopIGNvbnN0OwotICAgICAgICBwYWlyPGl0ZXJhdG9y
LCBib29sPiBhZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAg
ICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAgICAgICAgIAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDQzYTY0ZTk3MDcyNDA0MDQy
MjdkY2IwZDVlMjU2ZDM3NGI4NzM1OWEuLjM1MDk3OTI5Mjc4Yzc2MDY0YzRiMGRlYjlhZmUzOWZm
MTliZTRjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMzcxLDkgKzM3MSw5IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkp
CiB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIAogewogICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOwotICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IG1faHR0cEhlYWRlckZpZWxkcy5hZGQobmFtZSwgdmFsdWUpOyAKLSAgICBpZiAoIXJl
c3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsIiArIHZhbHVl
OworICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2h0dHBIZWFkZXJGaWVs
ZHMuYWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKIAogICAgIGlmICh1cmwo
KS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBk
YXRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApp
bmRleCAzZTU5OGJhYjZiOWE4NTBhNWE2Y2M5MjhjMDA2OWMwODkzYTgxMDllLi42ZTgxNGFlYjVl
ZjlkNjNlMDYyMGZhYjgyYjZiMmQ3MzY2NmYzNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIGJvb2wgUGx1Z2luRGF0YWJh
c2U6OmFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBycFBhY2thZ2UpCiAKICAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IHBycFBhY2thZ2U7CiAKLSAgICBpZiAoIW1fcGx1
Z2lucy5hZGQocGFja2FnZSkuc2Vjb25kKQorICAgIGlmICghbV9wbHVnaW5zLmFkZChwYWNrYWdl
KS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3BsdWdpbnNCeVBh
dGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZSk7CkBAIC01NzQsNyArNTc0LDcgQEAgdm9p
ZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKIAogICAgICAg
ICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBh
Y2thZ2VGcm9tQ2FjaGUocGF0aCwgbGFzdE1vZGlmaWVkLCBuYW1lLCBkZXNjLCBtaW1lRGVzYyk7
CiAKLSAgICAgICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1Z2lucy5hZGQocGFja2FnZSkuc2Vj
b25kKSB7CisgICAgICAgIGlmIChwYWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2Up
LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzLmFk
ZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UtPmxhc3RNb2RpZmllZCgpKTsKICAgICAgICAgICAg
IGNhY2hlZFBsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFi
YXNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2lu
LmNwcAppbmRleCAyNzEyMWM2NjRlM2M2YjZiYzZiNWQ2ZWRkYmJhYmJjZjcyYjc2OWVkLi5mZmI0
MjFhNGM0MjhhY2U5MjRkZjMzM2UwYTAwODUxOTYzNjEwMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hT
ZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9ICppdCArICJcXCIgKyBmaWxlbmFtZTsKLSAgICAg
ICAgICAgIGlmICghdW5pcXVlRmlsZW5hbWVzLmFkZChmdWxsUGF0aCkuc2Vjb25kKQorICAgICAg
ICAgICAgaWYgKCF1bmlxdWVGaWxlbmFtZXMuYWRkKGZ1bGxQYXRoKS5pc05ld0VudHJ5KQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBwYXRocy5hZGQoZnVsbFBhdGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNjU3MDc0Nzdk
NzA1MjBmNjg2NDYwODdjMTJhNzIxZmYyNGVmNmQzYi4uODM2MmFhZTNlNjc1MmExMTI3YTBjOWMw
NWQ1Njk3YzY3MGZiMWVmMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0zODMzLDcgKzM4MzMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRQZXJjZW50SGVp
Z2h0RGVzY2VuZGFudChSZW5kZXJCb3gqIGRlc2NlbmRhbnQpCiAgICAgICAgIGRlc2NlbmRhbnRT
ZXQgPSBuZXcgSGFzaFNldDxSZW5kZXJCb3gqPjsKICAgICAgICAgZ1BlcmNlbnRIZWlnaHREZXNj
ZW5kYW50c01hcC0+c2V0KHRoaXMsIGRlc2NlbmRhbnRTZXQpOwogICAgIH0KLSAgICBib29sIGFk
ZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQpLnNlY29uZDsKKyAgICBib29sIGFk
ZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQpLmlzTmV3RW50cnk7CiAgICAgaWYg
KCFhZGRlZCkgewogICAgICAgICBBU1NFUlQoZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmdl
dChkZXNjZW5kYW50KSk7CiAgICAgICAgIEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5lck1h
cC0+Z2V0KGRlc2NlbmRhbnQpLT5jb250YWlucyh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGUzNjYyOGY5MGNi
NjFjOTBiMmIyZjdjZjI3YjIzMzcwZTIxYzU3MDMuLjYwY2EzYjJjYWJjZDEwNGUwN2M5OGNhNWZi
NjMwZjhjZjlkNGNkMWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC02NjIsMTQgKzY2MiwxNCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihSb290SW5saW5lQm94KiBsaW5lQm94LCBC
aWRpUnVuKiBydQogICAgIHJ1bi0+bV9ib3gtPnNldExvZ2ljYWxXaWR0aChyZW5kZXJlci0+d2lk
dGgocnVuLT5tX3N0YXJ0LCBydW4tPm1fc3RvcCAtIHJ1bi0+bV9zdGFydCwgeFBvcywgbGluZUlu
Zm8uaXNGaXJzdExpbmUoKSwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93KSArIGh5cGhl
bldpZHRoKTsKICAgICBpZiAoIWZhbGxiYWNrRm9udHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFT
U0VSVChydW4tPm1fYm94LT5pc1RleHQoKSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRl
eHRCb3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEq
PigpLCBHbHlwaE92ZXJmbG93KCkpKS5maXJzdDsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZh
bGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5l
VGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0
YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAgICAgICBBU1NFUlQoaXQtPnNl
Y29uZC5maXJzdC5pc0VtcHR5KCkpOwogICAgICAgICBjb3B5VG9WZWN0b3IoZmFsbGJhY2tGb250
cywgaXQtPnNlY29uZC5maXJzdCk7CiAgICAgICAgIHJ1bi0+bV9ib3gtPnBhcmVudCgpLT5jbGVh
ckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKTsKICAgICB9CiAgICAg
aWYgKChnbHlwaE92ZXJmbG93LnRvcCB8fCBnbHlwaE92ZXJmbG93LmJvdHRvbSB8fCBnbHlwaE92
ZXJmbG93LmxlZnQgfHwgZ2x5cGhPdmVyZmxvdy5yaWdodCkpIHsKICAgICAgICAgQVNTRVJUKHJ1
bi0+bV9ib3gtPmlzVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChy
dW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEds
eXBoT3ZlcmZsb3coKSkpLmZpcnN0OworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94
KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwg
R2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0LT5zZWNvbmQuc2Vjb25kID0g
Z2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5tX2JveC0+Y2xlYXJLbm93blRvSGF2ZU5vT3Zl
cmZsb3coKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDhjMWI2YmYxOWI3M2E1OGIwNDcyODhlOTU1YTU5ZDY1
NWYyNjNhOWIuLmRhYjVkN2IyMWU3YWU5ZjBkZDljMDBhNTg3NDAyYWRhMWFjN2ZjMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3Bw
CkBAIC0yMTcsOCArMjE3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrSW52
YWxpZFJlZ2lvbnMoKQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5j
eU9uRmxvd1RocmVhZChSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG90aGVyRmxvd1RocmVhZCkKIHsK
LSAgICBzdGQ6OnBhaXI8UmVuZGVyTmFtZWRGbG93VGhyZWFkQ291bnRlZFNldDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5hZGQob3RoZXJGbG93VGhy
ZWFkKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIFJlbmRlck5hbWVkRmxvd1RocmVh
ZENvdW50ZWRTZXQ6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQu
YWRkKG90aGVyRmxvd1RocmVhZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2Ugc2VlIHRoaXMgZGVwZW5kZW5jeS4gTWFr
ZSBzdXJlIHdlIHJlY2FsY3VsYXRlIGFsbCB0aGUgZGVwZW5kZW5jaWVzLgogICAgICAgICB2aWV3
KCktPnNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0eSh0cnVlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGNjZTI1YTc0N2Yy
NThiNDMyODVhYjgyOTk4NTM0YTI3NjMwNGFkZjEuLmRlOThmZjg5MTg4NDU0NDE4NmE2ODc2NDU1
ZDkzNzMyZmVkMDE1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgUmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyUmVnaW9u
OjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJveCogYm94LAogICAgIGlmICgh
bV9pc1ZhbGlkIHx8ICFtX2Zsb3dUaHJlYWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3du
UHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25JbmZv
LmFkZChib3gsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFJlbmRlckJveFJl
Z2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25JbmZvLmFkZChib3gsIG51bGxw
dHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKGJveEluZm8pCiAgICAgICAgICpib3hJbmZv
ID0gUmVuZGVyQm94UmVnaW9uSW5mbyhsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNl
dCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAppbmRleCA5MDdmZTE2NzdiMTcwNDgyYzZmNGFjNTdlZDk3MWQ1NzIxOTFhZTQxLi5mOGY0
OTNkYjg1YTBkZGI3YTY5YzFmMTZjYjE3NWY3MGFkOWRjYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFw
cGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKgogICAgIGlmIChn
cmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGll
bnRNYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8R3Jh
ZGllbnREYXRhPiYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQob2JqZWN0LCBudWxs
cHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JhZGllbnREYXRhKQogICAgICAgICBn
cmFkaWVudERhdGEgPSBhZG9wdFB0cihuZXcgR3JhZGllbnREYXRhKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IGJlYzBmMzM3NGY0NjQzNjJhOWE1ODNlYWYxOTgzNTAyODFiOGQwMmMuLjRkYzUw
MWI4MDZiM2Q4ZGYyNTQ3NDU0M2JjZmNmZjM4NzYwZDYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVz
b3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKgogICAgIGlmIChtX2F0dHJp
YnV0ZXMucGF0dGVyblVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVD
VEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPFBhdHRlcm5EYXRhPiYgcGF0dGVybkRhdGEgPSBtX3Bh
dHRlcm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8
UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0dGVybk1hcC5hZGQob2JqZWN0LCBudWxs
cHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcGF0dGVybkRhdGEpCiAgICAgICAgIHBh
dHRlcm5EYXRhID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU1hcC5jcHAKaW5kZXggNDhkYjY5ODAzMjIyYTRjYjM5YWQxYTg1MDBmYTZjNjM4
NDgyMDY4OS4uOGU0MmQyZjE3NmRkM2IxMTEyYTAxYTUxZDhkYjYyZjRiMzhiYmEzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCkBAIC0xMzEsOSArMTMxLDkgQEAgUGFzc1Jl
ZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHUKICAgICB9CiAgICAgbV9jdXJyZW50TGVuZ3RoID0gbmV3TGVuZ3Ro
OwogCi0gICAgcGFpcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNv
bmQpCi0gICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gdmFsdWU7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCB2
YWx1ZSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSB2YWx1ZTsKIAogICAgIGludmFsaWRhdGVJdGVyYXRvcigpOwog
CkBAIC0xNzEsOCArMTcxLDggQEAgdm9pZCBTdG9yYWdlTWFwOjppbXBvcnRJdGVtKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEJlIHN1cmUgdG8gY29w
eSB0aGUga2V5cy92YWx1ZXMgYXMgaXRlbXMgaW1wb3J0ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCBhcmUgZGVzdGluZWQKICAgICAvLyB0byBjcm9zcyBhIHRocmVhZCBib3VuZGFyeQotICAgIHBh
aXI8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21h
cC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOyAgLy8gVHJ1ZSBpZiB0aGUga2V5IGRp
ZG4ndCBleGlzdCBwcmV2aW91c2x5LgorICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0
ZWRDb3B5KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7
IC8vIFRydWUgaWYgdGhlIGtleSBkaWRuJ3QgZXhpc3QgcHJldmlvdXNseS4KIAogICAgIEFTU0VS
VChtX2N1cnJlbnRMZW5ndGggKyBrZXkubGVuZ3RoKCkgPj0gbV9jdXJyZW50TGVuZ3RoKTsKICAg
ICBtX2N1cnJlbnRMZW5ndGggKz0ga2V5Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA4MTBiOTY2NWMxZmE4MjBlMDE5NTRmNzFm
MTdhZWM3N2U1NWRkMjVmLi45OTk4MDg5NDVhNTg4ZDcwOWFmYWM0NzU2M2IxZjQ2MWMwY2NhMWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAt
MjE1LDcgKzIxNSw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVz
b3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU1ZHU3R5bGVkCiAgICAgLy8gbWFwIGlmIHRo
ZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiBTbyB3ZSBhZGQgd2l0aCBhIHZhbHVlIG9mIDAsIGFu
ZCBpdCBlaXRoZXIgZmluZHMgdGhlCiAgICAgLy8gZXhpc3RpbmcgZWxlbWVudCBvciBhZGRzIGEg
bmV3IG9uZSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFRoZSAiLmZpcnN0LT5zZWNvbmQiIGlkaW9t
IGdldHMKICAgICAvLyB1cyB0byB0aGUgaXRlcmF0b3IgZnJvbSBhZGQncyByZXN1bHQsIGFuZCB0
aGVuIHRvIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGhhc2ggdGFibGUuCi0gICAgU1ZHUGVuZGluZ0Vs
ZW1lbnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgMCkuZmlyc3QtPnNlY29u
ZDsKKyAgICBTVkdQZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRk
KGlkLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc2V0KQogICAgICAgICBzZXQgPSBu
ZXcgU1ZHUGVuZGluZ0VsZW1lbnRzOwogICAgIHNldC0+YWRkKGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNzEyMjAwY2U2OTNjOWQ1ZGFiMTgwYTA3MTVm
ZWI3YTFmOWY2MzUzMy4uYTcxYzQ0NTU1Mzg3ZjVmZjg2ODQ0MzUyOTg3NDI0NDQyYzY4ODUwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC04OTksOSArODk5LDkgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmEKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVz
dEhlYWRlckludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBtX3JlcXVlc3RIZWFkZXJzLmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vj
b25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CisgICAg
SFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5h
bWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CiB9CiAKIFN0cmluZyBYTUxIdHRwUmVx
dWVzdDo6Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCAxNTRiNjdlOTJkMzJjN2QxNzZi
Y2I4MTA5MGU4ZGY0MTk4YjRiMDBhLi43MDdjYzdmY2UyYzczNjE4ZTgyOTg2ZGQ2Yjk2YzVmZWY3
Mzk4ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTM1MCw3ICsz
NTAsNyBAQCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAogICAgICAgICAvLyBJZiB0aGVy
ZSBhcmUgc2V2ZXJhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGlkLCBpZCgpIHNob3VsZCByZXR1cm4g
dGhlIGZpcnN0IG9uZS4KICAgICAgICAgLy8gSW4gV2ViS2l0LCBnZXRFbGVtZW50QnlJZCBiZWhh
dmVzIHNvLCB0b28sIGFsdGhvdWdoIGl0cyBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgZm9ybWFs
bHkgdW5kZWZpbmVkLgogICAgICAgICBOb2RlKiBub2RlID0gY29udGV4dFNjb3BlLT5nZXRFbGVt
ZW50QnlJZChTdHJpbmcoaWRMaXN0LmNoYXJhY3RlcnMoKSArIHN0YXJ0UG9zLCBlbmRQb3MgLSBz
dGFydFBvcykpOwotICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKG5vZGUpLnNlY29u
ZCkKKyAgICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFkZChub2RlKS5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKICAgICAgICAgCiAgICAgICAgIHN0YXJ0
UG9zID0gZW5kUG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAppbmRleCBkOWQxZmQ0N2Q2NjRm
MGM5YmRmMTQ2YWMyMWRkOTNhZGZhYjRhMjA0Li5iYTFkZWQzOWUxODRhMDNlNWUxODM1NTNkODBl
ZDZjYWRmZWNmYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgTG9jYXRpb25QYXRoOjpldmFsdWF0ZShOb2RlU2V0JiBub2RlcykgY29uc3QKIAog
ICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgbWF0Y2hl
cy5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1h
dGNoZXNbbm9kZUluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVw
bGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAgICAg
ICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRk
KG5vZGUpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIG5ld05vZGVzLmFwcGVuZChu
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRp
Y2F0ZS5jcHAKaW5kZXggNThjZDg3OThlYjM2M2FlYmI2YjQ4YzMzOTU2NzAwZmYxMDc1YTU3Ny4u
MzY4MDBhMTE3NDE2ZDA3MjZhMmFiMjIyODk5N2EwYmZiMWM4OTA1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgVmFsdWUgVW5pb246OmV2
YWx1YXRlKCkgY29uc3QKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJoc05vZGVz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByaHNOb2Rlc1tpXTsKLSAgICAg
ICAgaWYgKG5vZGVzLmFkZChub2RlKS5zZWNvbmQpCisgICAgICAgIGlmIChub2Rlcy5hZGQobm9k
ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdFNldC5hcHBlbmQobm9kZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZElu
Zm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcApp
bmRleCBlM2RjZThjNWFjNGQ2ZjZjZTQ3Njk4ZTJmM2E3MTI1MjYxMjJjNzU5Li4zYzBjZjE1ZDVj
OWM3M2FjNjU3OGM5YmE3NzZjZTliZTkzNGFlZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFdl
YkhUVFBMb2FkSW5mbzo6c2V0RW5jb2RlZERhdGFMZW5ndGgobG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoKQogCiBzdGF0aWMgdm9pZCBhZGRIZWFkZXIoSFRUUEhlYWRlck1hcCogbWFwLCBjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcGFpcjxI
VFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFs
dWUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgKz0gIiwgIiArIFN0cmluZyh2YWx1ZSk7CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1hcC0+YWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZh
bHVlKTsKIH0KIAogdm9pZCBXZWJIVFRQTG9hZEluZm86OmFkZFJlcXVlc3RIZWFkZXIoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGVjMjEyZTUxNzdjYzU4NjM4
Y2UwMTcyYzc1ZjEwOGQzZjM3NTJkM2IuLjA3ZDVhNDVmODhjZTljOGEzNDM3NDkzM2MyYjQzNzY5
ZTRhMDA3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJl
c3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25z
ZS5jcHAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OmFkZEhUVFBI
ZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYKICAgICAv
LyBGSVhNRTogQWRkIGFuIGFkZEhUVFBIZWFkZXJGaWVsZCBtZXRob2QgdG8gUmVzb3VyY2VSZXNw
b25zZS4KICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBtYXAgPSBtX3ByaXZhdGUtPm1fcmVzb3Vy
Y2VSZXNwb25zZS0+aHR0cEhlYWRlckZpZWxkcygpOwogICAgIFN0cmluZyB2YWx1ZVN0cih2YWx1
ZSk7Ci0gICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0KKyAg
ICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0KICAgICAgICAgY29uc3RfY2FzdDxI
VFRQSGVhZGVyTWFwKj4oJm1hcCktPmFkZChuYW1lLCB2YWx1ZVN0cik7Ci0gICAgaWYgKCFyZXN1
bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgdmFsdWVT
dHI7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQgKz0gIiwgIiArIHZhbHVlU3RyOwogfQogCiB2b2lkIFdlYlVSTFJlc3BvbnNlOjpj
bGVhckhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0Q09NQVBJLmNwcAppbmRleCBjNDQ1MGY3NDllZTFmYTk2NDVhNjEzMGVjOGJjM2JlZjk1NDRh
MTRhLi45YzljYzAyNmI0N2I0ZmVhOTYwYzYzOTg0NmUwZWJhNTFjNDY1M2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdENPTUFQSS5jcHAKQEAgLTUxLDEwICs1MSw5IEBAIHN0YXRpYyBDT01QdHI8SUNs
YXNzRmFjdG9yeT4gY2xhc3NGYWN0b3J5KGNvbnN0IENMU0lEJiBjbHNpZCkKICAgICB0eXBlZGVm
IEhhc2hNYXA8Q0xTSUQsIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiwgQ0xTSURIYXNoLCBDTFNJREhh
c2hUcmFpdHM+IEZhY3RvcnlNYXA7CiAgICAgc3RhdGljIEZhY3RvcnlNYXAmIGZhY3RvcmllcyA9
ICpuZXcgRmFjdG9yeU1hcDsKIAotICAgIHBhaXI8RmFjdG9yeU1hcDo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IGZhY3Rvcmllcy5hZGQoY2xzaWQsIDApOwotICAgIENPTVB0cjxJQ2xhc3NGYWN0
b3J5PiYgZmFjdG9yeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOwotICAgIGJvb2wgYWRkZWQgPSBy
ZXN1bHQuc2Vjb25kOwotICAgIGlmIChhZGRlZCAmJiBGQUlMRUQoRGxsR2V0Q2xhc3NPYmplY3Qo
Y2xzaWQsIF9fdXVpZG9mKGZhY3RvcnkpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmZhY3Rv
cnkpKSkpCisgICAgRmFjdG9yeU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGZhY3Rvcmllcy5hZGQo
Y2xzaWQsIDApOworICAgIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiYgZmFjdG9yeSA9IHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiBGQUlMRUQoRGxs
R2V0Q2xhc3NPYmplY3QoY2xzaWQsIF9fdXVpZG9mKGZhY3RvcnkpLCByZWludGVycHJldF9jYXN0
PHZvaWQqKj4oJmZhY3RvcnkpKSkpCiAgICAgICAgIGZhY3RvcnkgPSAwOwogCiAgICAgcmV0dXJu
IGZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Fy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
Q29kZXJzLmgKaW5kZXggYTJmZmEwZjI1MGJlODkwNjEyNDA3MWNkNDgyOWQ3ODhiN2I4YWYzOC4u
MDcwZjQ1ODMwNzlmN2I0ZWViZmNmNGEyYTg4ODQ3ODZkOGM1NTQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMTYxLDcgKzE2
MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
ICAgICBpZiAoIXRlbXBIYXNoTWFwLmFkZChrZXksIHZhbHVlKS5zZWNvbmQpIHsKKyAgICAgICAg
ICAgIGlmICghdGVtcEhhc2hNYXAuYWRkKGtleSwgdmFsdWUpLmlzTmV3RW50cnkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgaGFzaCBtYXAgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBrZXks
IGJhaWwuCiAgICAgICAgICAgICAgICAgZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmNwcAppbmRleCAzYzJmMTRjZWQwM2U4ZjA5YmYwNTM5Njg4OWIxODRlZjhi
ODVjNTllLi5mN2MzNzIzZjdlZjdkZDIyOTFlYTU5MTUwNjAwOTNkYzFjNDE4YmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTEwMCwx
NSArMTAwLDE1IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPENvbm5lY3Rpb246OlN5bmNNZXNzYWdl
U3RhdGU+IENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKFJ1bkxvb3Aq
IHJ1bkxvb3ApCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN5bmNNZXNzYWdlU3RhdGVNYXBN
dXRleCgpKTsKLSAgICBwYWlyPFN5bmNNZXNzYWdlU3RhdGVNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBzeW5jTWVzc2FnZVN0YXRlTWFwKCkuYWRkKHJ1bkxvb3AsIDApOworICAgIFN5bmNN
ZXNzYWdlU3RhdGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW5jTWVzc2FnZVN0YXRlTWFwKCku
YWRkKHJ1bkxvb3AsIDApOwogCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFT
U0VSVChyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZmlyc3Qt
PnNlY29uZDsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVChy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKICAgICB9CiAKICAgICBSZWZQdHI8U3luY01lc3NhZ2VTdGF0ZT4gc3luY01lc3Nh
Z2VTdGF0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jTWVzc2FnZVN0YXRlKHJ1bkxvb3ApKTsKLSAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IHN5bmNNZXNzYWdlU3RhdGUuZ2V0KCk7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSBzeW5jTWVzc2FnZVN0YXRlLmdldCgpOwogCiAgICAgcmV0dXJu
IHN5bmNNZXNzYWdlU3RhdGUucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9N
dXRhYmxlRGljdGlvbmFyeS5jcHAKaW5kZXggMmY5MDVlYzZhMTI0ODcwZDg5N2JhMzcwMDRiZThj
YWQyZmIyYzE3NC4uYWM2OWI3NmEzYjI0YWY3ZWMxNmFlOTc3Mzc5YzUxYTZlM2RlM2RkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwCkBAIC0zOCwxNCAr
MzgsMTQgQEAgTXV0YWJsZURpY3Rpb25hcnk6On5NdXRhYmxlRGljdGlvbmFyeSgpCiAKIGJvb2wg
TXV0YWJsZURpY3Rpb25hcnk6OmFkZChjb25zdCBTdHJpbmcmIGtleSwgQVBJT2JqZWN0KiBpdGVt
KQogewotICAgIHN0ZDo6cGFpcjxNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9t
YXAuYWRkKGtleSwgaXRlbSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5zZWNvbmQ7CisgICAgTWFwVHlw
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOworICAgIHJldHVybiBy
ZXN1bHQuaXNOZXdFbnRyeTsKIH0KIAogYm9vbCBNdXRhYmxlRGljdGlvbmFyeTo6c2V0KGNvbnN0
IFN0cmluZyYga2V5LCBBUElPYmplY3QqIGl0ZW0pCiB7Ci0gICAgc3RkOjpwYWlyPE1hcFR5cGU6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5zZXQoa2V5LCBpdGVtKTsKLSAgICByZXR1
cm4gcmVzdWx0LnNlY29uZDsKKyAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAu
c2V0KGtleSwgaXRlbSk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5OwogfQogCiB2b2lk
IE11dGFibGVEaWN0aW9uYXJ5OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCmluZGV4IDk2NzJmMjhkZjM3YWFiOTExZmRj
MjgxYmUyYzY4MjAwMDVjMmFiZjEuLmFjZTcyZmQyZTMzZTNiYzExN2ZjMmZhNDU1ZjE1ZDg3Nzdm
YzAwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCkBAIC0y
ODUsOCArMjg1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKG1lc3NhZ2VDb2RlcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLnNldChrZXksIGVsZW1lbnQucmVsZWFzZSgpKTsK
LSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5zZXQoa2V5
LCBlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDlj
ZTU0NDA3ZTU2OWQ1MDMwZjgxZGFiYTFlZmRjYjk5YmZiMGEwZjkuLmU4ZGZkODE2OGM3YTI3MTI2
NGFjZjVjNzFkZDkwMmMwYTc0NTViODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yNzEsMTggKzI3MSwxNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdpbmFsVVJMKTsKICAgICBNRVNTQUdF
X0NIRUNLX1VSTCh1cmwpOwogCi0gICAgc3RkOjpwYWlyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1N
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYWRk
KGl0ZW1JRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgLy8gTmV3IGl0
ZW0uCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCB1cmwsIHRpdGxlLCBiYWNrRm9yd2FyZERhdGEuZGF0YSgp
LCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpLCBpdGVtSUQpOworICAgIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW1NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYWRk
KGl0ZW1JRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdp
bmFsVVJMLCB1cmwsIHRpdGxlLCBiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERh
dGEuc2l6ZSgpLCBpdGVtSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gVXBk
YXRlIGV4aXN0aW5nIGl0ZW0uCi0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldE9yaWdpbmFs
VVJMKG9yaWdpbmFsVVJMKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0VVJMKHVybCk7
Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldFRpdGxlKHRpdGxlKTsKLSAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZC0+c2V0QmFja0ZvcndhcmREYXRhKGJhY2tGb3J3YXJkRGF0YS5kYXRhKCks
IGJhY2tGb3J3YXJkRGF0YS5zaXplKCkpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5z
ZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQt
PnNldFVSTCh1cmwpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5zZXRUaXRsZSh0aXRs
ZSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldEJhY2tGb3J3YXJkRGF0YShiYWNr
Rm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpKTsKIH0KIAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwCmluZGV4IGNlYmJiMzBjMWFmM2I0ZDljMWQyMzliMDhmYmY0ZTVhZTc2ZWY0
NmUuLjdkNzMwNWVkYmMzMGNkZTA5MWZhZmNmM2VjOWMzMjBlNThjNmUzNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtNjcsMTIgKzY3LDEy
IEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OmdldE9yQ3JlYXRlKE5vZGUqCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKG5vZGUsIDApOwotICAgIGlmICghcmVzdWx0LnNl
Y29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChub2RlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNy
ZWF0ZShub2RlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7
CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBub2RlSGFuZGxlLmdldCgpOwogICAgIHJl
dHVybiBub2RlSGFuZGxlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCBlOTRlZGZkMzRiOGI4OWQzNmU5ZDNlN2Zk
YjBjNDdhMDA1MjVlMTE5Li4xYjc0ZjAxMjQwMDhkYjNjMDc4MjhlYTZmNmQyYzA1YWMwNTljMzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApA
QCAtNDYsMTIgKzQ2LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4g
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoUmFuCiAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBzdGQ6OnBhaXI8RE9NSGFuZGxlQ2FjaGU6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFuZGxl
Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7
CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9IHJhbmdlSGFuZGxlLmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
cmFuZ2VIYW5kbGUuZ2V0KCk7CiAgICAgcmV0dXJuIHJhbmdlSGFuZGxlLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZTRjNzJlYTFmNzRk
NWUxMTU1NDU0YjhhMzVjOWNhZTM2OWE4ZWMuLjI2ZTU0MDc0NGJkNTI3NGM5YjZkYWNlZWE1YmY5
NGZhM2FlMDQ5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAgbV9ub3RpZmljYXRpb25NYXAu
c2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uSUQpOwogICAgIG1fbm90aWZpY2F0aW9uSURN
YXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwogICAgIAotICAgIE5vdGlmaWNh
dGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFk
ZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2NF90
PigpKS5maXJzdDsKKyAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1f
bm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuaXRlcmF0b3I7CiAgICAgaXQtPnNlY29uZC5h
cHBlbmQobm90aWZpY2F0aW9uSUQpOwogICAgIAogICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uVVJM
KCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCksIG5vdGlmaWNhdGlvbi0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3Rp
ZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IGMxYmEwNTBjZjZkYTFkN2FhMTYxNzYxNDM3ZjRjNDhkNWFkZTIx
ZDEuLjJkZmNkZTA4M2I5YzE0YjFjNDExMjYzYjY2MjMwMzg5ZmUxYmYzMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTE4LDE2ICs1MTgsMTYgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sg
Zm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3Ig
dGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0
aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCi0gICAg
c3RkOjpwYWlyPEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+OjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIDApOwotICAgIGlmIChyZXN1bHQu
c2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRl
cnMpOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+OjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBwYXJh
bWV0ZXJzKTsKIAogICAgICAgICAvLyBCYWxhbmNlZCBieSBhbiBlbmFibGVUZXJtaW5hdGlvbiBp
biByZW1vdmVXZWJQYWdlLgogICAgICAgICBkaXNhYmxlVGVybWluYXRpb24oKTsKICAgICB9CiAK
LSAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIEFTU0VSVChyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQpCkBAIC03MzksMTMgKzczOSwxMyBAQCBXZWJQYWdlR3JvdXBQcm94eSogV2Vi
UHJvY2Vzczo6d2ViUGFnZUdyb3VwKHVpbnQ2NF90IHBhZ2VHcm91cElEKQogCiBXZWJQYWdlR3Jv
dXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEm
IHBhZ2VHcm91cERhdGEpCiB7Ci0gICAgc3RkOjpwYWlyPEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGFnZUdy
b3VwTWFwLmFkZChwYWdlR3JvdXBEYXRhLnBhZ2VHcm91cElELCAwKTsKLSAgICBpZiAocmVzdWx0
LnNlY29uZCkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAg
ICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJQYWdlR3JvdXBQcm94eTo6Y3JlYXRlKHBhZ2VH
cm91cERhdGEpOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94
eT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZUdyb3VwTWFwLmFkZChwYWdlR3JvdXBEYXRh
LnBhZ2VHcm91cElELCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
QVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShwYWdlR3JvdXBEYXRhKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiBzdGF0aWMgYm9vbCBjYW5QbHVn
aW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NzgyZjNkZWUz
MzRiOTc1OTBkNTAxODhkOGZmMTViZTFmMDg0MTAzLi42ZTU2MTBjM2NkNWY4NzA5NTc4ZTBlZjQw
ZGRiMGM2MTg1ZjEyOWIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMjggIENhaW8gTWFyY2VsbyBkZSBP
bGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBI
YXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUg
dG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklz
b2xhdGVkV29ybGQpOgorCiAyMDEyLTAzLTI4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGRvZXNuJ3QgbG9nIGNvcnJl
Y3RseSBhZnRlciByZXRyeWluZyBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggODA5NDFiOGUwNjcyZGFm
NDA1N2UxZmUwN2ZhMDM1OGUwZmFjYmExYy4uMWI2YTQxNTdjNDhlNjY2NWQ1MzljYWM4YWQ3ODgw
OTMyM2M3MjBmNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3Js
ZElELCBKU09iagogICAgICAgICBpZiAoRkFJTEVEKFdlYktpdENyZWF0ZUluc3RhbmNlKF9fdXVp
ZG9mKFdlYlNjcmlwdFdvcmxkKSwgMCwgX191dWlkb2Yod29ybGQpLCByZWludGVycHJldF9jYXN0
PHZvaWQqKj4oJndvcmxkKSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIENPTVB0cjxJV2ViU2NyaXB0V29ybGQ+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFk
ZCh3b3JsZElELCAwKS5maXJzdC0+c2Vjb25kOworICAgICAgICBDT01QdHI8SVdlYlNjcmlwdFdv
cmxkPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuaXRlcmF0b3ItPnNl
Y29uZDsKICAgICAgICAgaWYgKCF3b3JsZFNsb3QgJiYgRkFJTEVEKFdlYktpdENyZWF0ZUluc3Rh
bmNlKF9fdXVpZG9mKFdlYlNjcmlwdFdvcmxkKSwgMCwgX191dWlkb2Yod29ybGRTbG90KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3b3JsZFNsb3QpKSkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApp
bmRleCAwNTgzNDg2ODQ5ZDVjN2VmNTU0YzY3N2E2YzIzZjRmYzk4YjhkMWI5Li5jZWM0MzQ0ZGQy
Y2YzNDU2ZjdiNTJkNzdiOTdkMzBjN2VkMjUwMGVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1
YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKEpTQ29udGV4dFJlZiBjb250ZXh0LCB1CiAgICAgaWYg
KCF3b3JsZElEKQogICAgICAgICB3b3JsZC5hZG9wdChXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRl
V29ybGQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0
V29ybGRSZWY+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5maXJzdC0+
c2Vjb25kOworICAgICAgICBXS1JldGFpblB0cjxXS0J1bmRsZVNjcmlwdFdvcmxkUmVmPiYgd29y
bGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAg
ICAgICAgaWYgKCF3b3JsZFNsb3QpCiAgICAgICAgICAgICB3b3JsZFNsb3QuYWRvcHQoV0tCdW5k
bGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpOwogICAgICAgICB3b3JsZCA9IHdvcmxkU2xvdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134556</attachid>
            <date>2012-03-29 05:53:11 -0700</date>
            <delta_ts>2012-03-29 06:14:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120329095310.patch</filename>
            <type>text/plain</type>
            <size>180313</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDM2ZDUxMzVjOGExNjA2ZTRmNmM1NzEyNWJiM2Q4YWVkMmU1NjA2Li4wZjk1MDJiZTkzNmQ1MTJm
ZGZlZmFmZGFlNjNlNzg3M2VmNzM5NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yOCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBvYmplY3QgZXF1
YWxpdHkgc3BlY3VsYXRpb25zIHNob3VsZCBiZSBzaW1wbGlmaWVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ4MGFiODRkMDc5
NTZmMjUyZjkxYThkNDAwYmU4NDk5NGQ5YzkyYTUuLjFhZTgyNTljMjc5M2QwZTZiMzgzODFlYTU1
YjNkMDQ0NzgwM2QyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDMtMjkgIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBIYXNoVGFibGU8Pjo6YWRkKCkgYW5kIGRlcml2YXRlIGZ1bmN0aW9ucyByZXR1cm4gYW4gQWRk
UmVzdWx0IHN0cnVjdCBpbnN0ZWFkCisgICAgICAgIG9mIGEgcGFpci4gVGhpcyBzdHJ1Y3QgY29u
dGFpbnMgY29udGFpbnMgJ2l0ZXJhdG9yJyBhbmQgJ2lzTmV3RW50cnknIG1lbWJlcnMsIHRoYXQg
YXJlCisgICAgICAgIG1vcmUgcmVhZGFibGUgYXQgY2FsbHNpdGVzIHRoYW4gcHJldmlvdXMgJ2Zp
cnN0JyBhbmQgJ3NlY29uZCcuCisKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAg
ICAgICAgKEhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAq
IHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChIYXNoTWFwKToKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoSGFz
aFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURik6CisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ6Okhhc2hU
YWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChIYXNoVGFibGVBZGRSZXN1bHQpOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6YWRk
KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZFBhc3NpbmdIYXNo
Q29kZSk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChMaXN0SGFzaFNl
dCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUp
OgorICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6SWRlbnRpZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWRE
YXRhLmg6CisgICAgICAgIChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAg
ICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1MWRiYTI2ZTAxYzUyZjJm
ZmVmYTgwMzVhZjc5MzlmMzI0MjljZjMuLjIyNWVlYWU0NmVjZDNjYWVmZmZlNWEyZjgxNTczNDUx
OWEwNWU5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTIgQEAKKzIwMTItMDMtMjkgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2
ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRl
c3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
T01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hU
YWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0
LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVu
dGlmaWVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAg
ICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFj
Y3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRR
dWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6
CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxl
Y3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNl
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91
cCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRM
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNoYW5nZXNGbHVzaGVyOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREZXJpdmVkRm9udERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQVRTVUkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUFUU1VTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlRm9udERhdGE6OmdldENGU3RyaW5nQXR0cmlidXRlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3R5
bGVDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5j
eU9uRmxvd1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgIChIVFRQSGVhZGVyTWFw
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxk
KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpbkRhdGFiYXNlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJh
c2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSk6CisgICAgICAgICogcGx1Z2lucy93aW4v
UGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6
OmdldFBsdWdpblBhdGhzSW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRQZXJjZW50SGVp
Z2h0RGVzY2VuZGFudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OnNldFJlbmRlckJveFJlZ2lvbkluZm8pOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAq
IHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjpz
ZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OmltcG9ydEl0ZW0pOgorICAg
ICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
c2V0UmVxdWVzdEhlYWRlckludGVybmFsKToKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bklkOjpldmFsdWF0ZSk6CisgICAgICAg
ICogeG1sL1hQYXRoUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6TG9jYXRpb25Q
YXRoOjpldmFsdWF0ZSk6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhQYXRoOjpVbmlvbjo6ZXZhbHVhdGUpOgorCisyMDEyLTAzLTI5ICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxh
Y2tCZXJyeV0gQWRkIEludGVybmFsIHRlc3Qgc3VwcG9ydCBmb3IgYmxhY2tiZXJyeSBwb3J0aW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1OTcK
KworICAgICAgICBSZXZpZXdlZCBieSBSb2IgQnVpcy4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IGp1c3QgdGhlIGJ1aWxkIHN5c3RlbSBlbmhhbmNlbWVudCBmb3IgQmxhY2tCZXJyeSBwb3J0aW5n
LgorCisgICAgICAgICogVXNlSlNDLmNtYWtlOgorCiAyMDEyLTAzLTI4ICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN3aXRj
aCBoZWFwIHByb2ZpbGVyIGZyb250LWVuZCB0byBzZXBhcmF0ZSBzdG9yYWdlIG9mIG5vZGVzIGFu
ZCBlZGdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmYWEwNWFlYTkyYjM0NDRkM2Jh
ZWFkMjEwMDM1NmM0ZWQwMmFiMjY3Li43NzE2YzJjMzQ0OWI4NjdkMmQwMGZlZWVlNjM2NmE0ZWY0
YzM3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1v
cmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBh
aXIuCisKKyAgICAgICAgKiBzcmMvV2ViSFRUUExvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6YWRkSGVhZGVyKToKKyAgICAgICAgKiBzcmMvV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6YWRkSFRUUEhlYWRlckZpZWxkKToKKwogMjAxMi0w
My0yOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBiZXR0ZXIgY29tbWVudHMgZm9yIHRoZSBXZWJSVEMgbWV0
aG9kcyBpbiBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDdkMGRl
OGNjY2Y0NDJiMDEwNmVhYjEyNWM4MDAzNWMzOGM1NTIxMWQuLmJmYjBmMTRkNDg0YmYxMDYzOTNk
YjYxYTE2OGY4ODdjMTZhZjllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWly
YUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4g
YSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2Yg
YSBwYWlyLgorCisgICAgICAgICogV2ViS2l0Q09NQVBJLmNwcDoKKyAgICAgICAgKGNsYXNzRmFj
dG9yeSk6CisKIDIwMTItMDMtMjggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291cmNlIGNhbGxiYWNrLCBz
aW5jZSBubwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDcyNjgyMWQwOTc0NWZiODM5MDdiYjE1NDBiNmQ5Yzk2OTE0
NjgzMDEuLmNhNTllMzkwZDJhY2ZkNWIxMTZiZWRjZTIzNWI4NmZiODNhYTc0N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJh
IEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8
Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2Ug
QWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TXV0YWJsZURpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6
Ok11dGFibGVEaWN0aW9uYXJ5OjpzZXQpOgorICAgICAgICAqIFNoYXJlZC9Vc2VyTWVzc2FnZUNv
ZGVycy5oOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVzc2FnZURlY29kZXI6OmJhc2VEZWNvZGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXApOgorCiAyMDEyLTAzLTI4ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgY3Jhc2ggYW5kIGFu
IGFzc2VydGlvbiB3aGVuIHJlY292ZXJpbmcgZnJvbSBhIHdlYiBwcm9jZXNzIGNyYXNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDYxM2U1Mzhi
Yzc1ZGIzNjlmN2RmZjdiNjc5ODkyY2I3MDJiMzIxMzYuLjlhY2EwYzdlMThjYTVjY2NjZWU3MzU5
ZWEzOTFjMjgzNGIwYTFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0RGF0
YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7Ci0gICAgICAgICAgICBtX3Byb3BlcnR5TWFwLmFkZChw
cm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwg
b3duZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuYWRkKHByb3BlcnR5TmFt
ZS5pbXBsKCksIGVtcHR5KS5pdGVyYXRvci0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCBvd25lciwg
dmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlbGV0ZVByaXZhdGVQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRleCA1YzI0OWFiYWY2NWViYmE4OTJmOWY1MzAzMzRj
NWRiYzBkOTViOTlkLi4xMzUzNGQwNzhjNmI5Yjg3ODFmMDk5NmE2YmI5ODhiMzdmNGRiZDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTE2NCw3ICsxNjQs
NyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShK
U0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQwogCiBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEm
IE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBPd25Q
dHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7
CisgICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhl
Yy0+Z2xvYmFsRGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFkZCh0aGlzLCBudWxscHRyKS5pdGVy
YXRvci0+c2Vjb25kOwogICAgIGlmICghY29udGV4dERhdGEpCiAgICAgICAgIGNvbnRleHREYXRh
ID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMpKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCA0YTZmNDY1M2VhYjg5MmZjNmRhMGRiOTNjYjQ5Y2IxNTcxYTZhZGZiLi4wZjA4NTc5NTMzNjQw
NGM1YTA0ZmExZTdiY2RjMTZhMDI3ZTFmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjAwLDEw
ICsyMDAsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQsIFJlZ2lzdGUKIHsKICAgICBpbnQgaW5kZXggPSBt
X2NhbGxlZVJlZ2lzdGVycy5zaXplKCk7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShp
bmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7Ci0gICAgcGFpcjxTeW1ib2xUYWJsZTo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwg
bmV3RW50cnkpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFi
bGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAKLSAgICBpZiAoIXJlc3VsdC5zZWNv
bmQpIHsKLSAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0
SW5kZXgoKSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICByMCA9ICZy
ZWdpc3RlckZvcihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjE1LDkgKzIxNSw5IEBAIGludCBCeXRlY29kZUdl
bmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29u
c3RhbnQpCiB7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7CiAgICAgU3lt
Ym9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7
Ci0gICAgcGFpcjxTeW1ib2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRh
YmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlmICghcmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRleCgpOworICAg
IFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQu
aW1wbCgpLCBuZXdFbnRyeSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAg
aW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOwogICAgIHJldHVybiBp
bmRleDsKIH0KIApAQCAtOTY4LDI0ICs5NjgsMjQgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQK
IHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudChjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5pbXBsKCk7Ci0gICAgcGFp
cjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pZGVudGlmaWVyTWFw
LmFkZChyZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwotICAgIGlmIChy
ZXN1bHQuc2Vjb25kKSAvLyBuZXcgZW50cnkKKyAgICBJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklk
ZW50aWZpZXJzKCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgbV9jb2Rl
QmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIHJlcCkpOwogCi0g
ICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0
YW50VmFsdWUoSlNWYWx1ZSB2KQogewogICAgIGludCBpbmRleCA9IG1fbmV4dENvbnN0YW50T2Zm
c2V0OwogCi0gICAgcGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9q
c1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodiksIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsK
LSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIEpTVmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2KSwgbV9uZXh0Q29uc3RhbnRP
ZmZzZXQpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBtX2NvbnN0YW50
UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25leHRD
b25zdGFudE9mZnNldCk7CiAgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CiAgICAgICAg
IG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVlKHYpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgaW5kZXggPSByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZDsKIAogICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNb
aW5kZXhdOwogfQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikKICAgICAvLyB3
b3JrIGNvcnJlY3RseSB3aXRoIE5hTiBhcyBhIGtleS4KICAgICBpZiAoaXNuYW4obnVtYmVyKSB8
fCBudW1iZXIgPT0gSGFzaFRyYWl0czxkb3VibGU+OjplbXB0eVZhbHVlKCkgfHwgSGFzaFRyYWl0
czxkb3VibGU+Ojppc0RlbGV0ZWRWYWx1ZShudW1iZXIpKQogICAgICAgICByZXR1cm4gZW1pdExv
YWQoZHN0LCBqc051bWJlcihudW1iZXIpKTsKLSAgICBKU1ZhbHVlJiB2YWx1ZUluTWFwID0gbV9u
dW1iZXJNYXAuYWRkKG51bWJlciwgSlNWYWx1ZSgpKS5maXJzdC0+c2Vjb25kOworICAgIEpTVmFs
dWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVlKCkpLml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQogICAgICAgICB2YWx1ZUluTWFwID0g
anNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCB2YWx1ZUluTWFwKTsK
QEAgLTExNDAsNyArMTE0MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIpCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFw
LmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBKU1N0cmluZyom
IHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVy
YXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApCiAgICAgICAgIHN0cmluZ0luTWFw
ID0ganNPd25lZFN0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKICAg
ICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0luTWFwKSk7CkBAIC0xNjQ4LDcg
KzE2NDgsNyBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRCdWZmZXIo
dW5zaWduZWQgbGVuZ3RoKQogCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmlu
Z0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcq
JiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuZmly
c3QtPnNlY29uZDsKKyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRk
KGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5n
SW5NYXApIHsKICAgICAgICAgc3RyaW5nSW5NYXAgPSBqc1N0cmluZyhnbG9iYWxEYXRhKCksIGlk
ZW50aWZpZXIudXN0cmluZygpKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShzdHJpbmdJbk1h
cCk7CkBAIC0xNzE4LDEwICsxNzE4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbkJvZHlOb2RlCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TGF6eU5ld0Z1bmN0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24pCiB7Ci0gICAgc3RkOjpwYWlyPEZ1
bmN0aW9uT2Zmc2V0TWFwOjppdGVyYXRvciwgYm9vbD4gcHRyID0gbV9mdW5jdGlvbk9mZnNldHMu
YWRkKGZ1bmN0aW9uLCAwKTsKLSAgICBpZiAocHRyLnNlY29uZCkKLSAgICAgICAgcHRyLmZpcnN0
LT5zZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihtX2ds
b2JhbERhdGEsIGZ1bmN0aW9uKSk7Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFs
KGRzdCwgcHRyLmZpcnN0LT5zZWNvbmQsIHRydWUpOworICAgIEZ1bmN0aW9uT2Zmc2V0TWFwOjpB
ZGRSZXN1bHQgcHRyID0gbV9mdW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAwKTsKKyAgICBp
ZiAocHRyLmlzTmV3RW50cnkpCisgICAgICAgIHB0ci5pdGVyYXRvci0+c2Vjb25kID0gbV9jb2Rl
QmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24obV9nbG9iYWxEYXRhLCBmdW5jdGlv
bikpOworICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIHB0ci5pdGVyYXRv
ci0+c2Vjb25kLCB0cnVlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgsIGJv
b2wgZG9OdWxsQ2hlY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmI5NWNhZmI2ODI2M2E5YmY1MTBhYTRlNDIyN2Y1
ZWE0M2EzZWU5OC4uY2Q5ZGUyMmYwNTk4Nzk4ZTI3YjI3NzFiOWI4N2U0NTEzNmE5NzhjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtMjU2LDkgKzI1Niw5IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEdldHRlclNldHRlclBhaXIgcGFpcihu
b2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPigwKSk7Ci0gICAgICAgICAgICBzdGQ6OnBh
aXI8R2V0dGVyU2V0dGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLmFkZChub2Rl
LT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkK
LSAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5zZWNvbmQgPSBub2RlOworICAg
ICAgICAgICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLmFkZChub2Rl
LT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuc2Vjb25kID0gbm9k
ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVtYWluaW5nIHBy
b3BlcnRpZXMgaW4gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAppbmRleCA0NDFjOWFlZDMzMWM4YjNlYjhkNzYyMzQwY2JhOTM1MzRkYzUzNGVh
Li5lZGU4YTliYTI0OGI5YTg5NGI3OTE3NGVkNWQzMjBmODhmNWNjYjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgaW5s
aW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCiAKICAgICAvLyBD
aGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgc2V0IC0gaWYgc28sCiAgICAg
Ly8gd2UndmUgYWxyZWFkeSByZXRyYW5zbGF0ZWQgaXQsIG5vdGhpbmcgdG8gZG8gaGVyZS4KLSAg
ICBpZiAoIW1fZnVuY3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJsZSkuc2Vjb25kKQorICAg
IGlmICghbV9mdW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxlKS5pc05ld0VudHJ5KQog
ICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmdW5jdGlvbi0+c2NvcGUo
KS0+Z2xvYmFsT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDk2OTEw
MWU4N2M1MzhjOTVkMTdkMTY1MWFlMmFjNWQ2ZDM2YjI1OWQuLmFjMmMzZGIyMWNmNzRhMWE0ZDY0
YjQ2ODlmZjE2ZmVmZTdiZDFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZvcihD
b2RlQmxvY2sqCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRDb2RlTWFwKCkpOwogICAg
IAotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFw
cy5hZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKKyAg
ICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+ID46
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29kZUJsb2NrLCBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKICAgICAKLSAgICBpZiAocmVzdWx0LnNl
Y29uZCkKLSAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShyZXN1bHQuZmly
c3QtPnNlY29uZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBjb2RlQmxv
Y2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAK
LSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kOwogfQogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5Mjg1MDU2
M2FlZDUxMTUzOTdjYWM4YTQyMjc1OGIwNzRiODZhNGEzLi5mMGRhNmNjMDFiNzBlODc5YmI5MDk3
OGM4YmE4NzA2ZmFkODY4ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTUxLDExICs1NTEsMTEgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBOb2RlSW5kZXggY2VsbENvbnN0YW50KEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAg
IHBhaXI8SGFzaE1hcDxKU0NlbGwqLCBOb2RlSW5kZXg+OjppdGVyYXRvciwgYm9vbD4gaXRlciA9
IG1fY2VsbENvbnN0YW50Tm9kZXMuYWRkKGNlbGwsIE5vTm9kZSk7Ci0gICAgICAgIGlmIChpdGVy
LnNlY29uZCkKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IGFkZFRvR3JhcGgoV2Vh
a0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CisgICAgICAgIEhhc2hNYXA8SlNDZWxsKiwgTm9k
ZUluZGV4Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2VsbENvbnN0YW50Tm9kZXMuYWRkKGNlbGws
IE5vTm9kZSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJbmZv
KGNlbGwpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBpdGVyLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAgICAgCiAgICAg
Q29kZU9yaWdpbiBjdXJyZW50Q29kZU9yaWdpbigpCkBAIC0yNTk1LDEwICsyNTk1LDEwIEBAIEJ5
dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KEJ5dGVDb2Rl
UGFyc2VyKiBieXRlQ29kZVBhcnNlCiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsgKytpKSB7CiAgICAgICAgICAgICBTdHJp
bmdJbXBsKiByZXAgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoaSkuaW1wbCgpOwotICAgICAgICAg
ICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYnl0ZUNvZGVQ
YXJzZXItPm1faWRlbnRpZmllck1hcC5hZGQocmVwLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxv
Y2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LnNlY29u
ZCkKKyAgICAgICAgICAgIElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBieXRlQ29k
ZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVC
bG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKICAgICAgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPmFk
ZElkZW50aWZpZXIoSWRlbnRpZmllcihieXRlQ29kZVBhcnNlci0+bV9nbG9iYWxEYXRhLCByZXAp
KTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVzdWx0LmZpcnN0LT5zZWNv
bmQ7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJs
b2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7ICsraSkgewogICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay0+Z2V0Q29uc3RhbnQoaSArIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4KTsKQEAgLTI2MTEsMTIgKzI2MTEsMTIgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5dGVDb2RlUGFy
c2UKICAgICAgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+
bV9lbXB0eUpTVmFsdWVJbmRleDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHBhaXI8SlNWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudFJlZ2lzdGVy
cygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAgICAgICAgaWYgKHJlc3Vs
dC5zZWNvbmQpIHsKKyAgICAgICAgICAgIEpTVmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBi
eXRlQ29kZVBhcnNlci0+bV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBi
eXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKSAr
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+
YWRkQ29uc3RhbnQodmFsdWUpOwogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2Nv
bnN0YW50cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAg
ICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNMaW5raW5nID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggOWFlMzJjNGIw
ZGUyYjY5ZTMzMWE1OGFkZmM0MGU0MTUxY2EyZmE5MC4uODJmNmRmN2QxMmE4ZWYyNzQ0MDU1MTZk
ZTY2YzU1MzYzOGI0ZmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
QEAgLTM1NTgsMjQgKzM1NTgsMjQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIHRvX29iamVjdCkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIEpJVFRodW5rczo6Y3RpU3R1
YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKIHsK
LSAgICBzdGQ6OnBhaXI8Q1RJU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9jdGlT
dHViTWFwLmFkZChnZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpKTsKLSAgICBpZiAo
ZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gZ2VuZXJhdG9yKGds
b2JhbERhdGEpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgIENUSVN0dWJN
YXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCisgICAgICAgIGVu
dHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7CisgICAgcmV0dXJu
IGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5r
czo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsKLSAgICBzdGQ6OnBh
aXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faG9zdEZ1
bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigp
KTsKLSAgICBpZiAoIXJlc3VsdC5maXJzdC0+c2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3Qt
PnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVF
eGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwo
Z2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjb25zdHJ1Y3Rv
ciwgTm9JbnRyaW5zaWMpKTsKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7
CisgICAgSG9zdEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faG9zdEZ1bmN0
aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigpKTsK
KyAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKQorICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRp
dmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNh
bGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjb25zdHJ1
Y3RvciwgTm9JbnRyaW5zaWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
Z2V0KCk7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1
YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUaHVu
a0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7Ci0gICAgc3RkOjpw
YWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1faG9zdEZ1
bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigp
KTsKLSAgICBpZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CisgICAgSG9zdEZ1bmN0aW9uU3R1
Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5hZGQoZnVuY3Rp
b24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIGlmICghKmVudHJ5Lml0ZXJh
dG9yLT5zZWNvbmQpIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGU7CiAgICAg
ICAgIGlmIChnZW5lcmF0b3IpIHsKICAgICAgICAgICAgIGlmIChnbG9iYWxEYXRhLT5jYW5Vc2VK
SVQoKSkKQEAgLTM1ODQsOSArMzU4NCw5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6
aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1CiAgICAg
ICAgICAgICAgICAgY29kZSA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERh
dGEsIGZ1bmN0aW9uKTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IFBhc3NXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmds
b2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29u
ZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRh
YmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNh
bGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKICAgICB9Ci0gICAgcmV0
dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9y
LT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVhckhvc3RGdW5jdGlvblN0
dWJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmNTg4NDdm
ZDI0Njc4ZjJmMjUyYzM1MWI1ZDhkM2JlOWU1MzVhYjcyLi42OTQzOTc3YTg1YTZmZjdjOTExYTcy
YTRjODM5YjY5YzFkNzQzOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAg
ICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKICAgICAgICAgZmFp
bElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRl
ZCkgewotICAgICAgICAgICAgc3RkOjpwYWlyPE9iamVjdFZhbGlkYXRpb25NYXA6Oml0ZXJhdG9y
LCBib29sPiBwcm9wZXJ0eUVudHJ5SXRlciA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5n
ZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOwotICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5SXRlci5zZWNvbmQpIHsKLSAgICAgICAgICAgICAg
ICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQgPT0gUHJvcGVydHlO
b2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICBPYmplY3RWYWxpZGF0aW9uTWFwOjpBZGRSZXN1
bHQgcHJvcGVydHlFbnRyeSA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5nZXROYW1lKHBy
b3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOworICAgICAgICAgICAg
aWYgKCFwcm9wZXJ0eUVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAgICBmYWlsSWZU
cnVlKHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50KTsKICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1
ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNl
Y29uZCk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNlY29uZCB8
PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGZhaWxJZlRydWUo
Y29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29u
ZCk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9IGNv
bnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHByb3BlcnR5LCB0YWlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CmluZGV4IDc1MTNkMWYxMWZkNDg5NTgyOGFmOGNhZWJlODBhZGExNWI1ZjU3ZjkuLjY4YTY5M2Ez
ZTllZGUyYTk3OGU3ZjgxNTY0MTNkYjM4ZWNhY2E5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9v
bCBkZWNsYXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAgIHsKICAgICAg
ICAgYm9vbCBpc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1l
bnRzID09ICppZGVudDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFy
ZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5zZWNvbmQgJiYgbV9nbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAhaXNBcmd1bWVudHM7Cisg
ICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFibGVzLmFkZChp
ZGVudC0+dXN0cmluZygpLmltcGwoKSkuaXNOZXdFbnRyeSAmJiBtX2dsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3VtZW50czsKICAgICAgICAgbV9pc1Zh
bGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7
CiAgICAgICAgIGlmIChpc0FyZ3VtZW50cykKICAgICAgICAgICAgIHNldEZsYWdzKFNoYWRvd3NB
cmd1bWVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5jcHAKaW5kZXggZmJjNTc4N2NlNjU3MmE4ZDg0ZDdjMDRiZjgyMzE3ZjU4NDgwNmI2My4uMTgy
YmNjNDYyMDIyYjRlYzJjYmFjNjg1NWM1MDI5ZjY0YzcxMWZmZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTExMCwxMSArMTEwLDExIEBAIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgY2hhciogYykKICAgICBpZiAoaXRlciAhPSBsaXRlcmFsSWRlbnRpZmllclRh
YmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogCi0gICAgcGFpcjxIYXNo
U2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGlkZW50aWZpZXJU
YWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46
OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRkPGNvbnN0IExDaGFyKiwg
SWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yPihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oYykpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFuc2xhdGVkLCB0aGVu
IHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVs
bHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkZWRTdHJpbmcg
PSBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVz
dWx0LmZpcnN0OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRlZFN0cmluZyA9IGFkZFJlc3Vs
dC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRvcikgOiAqYWRkUmVzdWx0
Lml0ZXJhdG9yOwogCiAgICAgbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5hZGQoYywgYWRkZWRTdHJp
bmcuZ2V0KCkpOwogCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZDgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVQ2hhciog
cwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsK
ICAgICBDaGFyQnVmZmVyPFVDaGFyPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgcGFpcjxIYXNo
U2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEt
PmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJG
cm9tVUNoYXJUcmFuc2xhdG9yID4oYnVmKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRk
UmVzdWx0IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJC
dWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yID4oYnVmKTsK
ICAgICAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2Ug
bmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1
cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYo
KmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIHJldHVybiBhZGRSZXN1
bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3Vs
dC5pdGVyYXRvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgpAQCAtMjEwLDcg
KzIxMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkU2xvd0Nhc2Uo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHI7CiAgICAgfQogCi0gICAgcmV0dXJuICpnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUtPmFk
ZChyKS5maXJzdDsKKyAgICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRk
KHIpLml0ZXJhdG9yOwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFk
ZFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiOWU1YTE4NTQ0OTIzOTc4NzQ2MDI5
MmEyMmVhYjM1MmJmN2I4ZTIyLi4xNDk2MDg3NmI2ZjU4ZDg2N2I5YTVlMzgyNzVjZWQwNmMyYWNl
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0x
NzgsMTEgKzE3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICAgICAgQ2hhckJ1ZmZl
cjxUPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBs
Kj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFi
bGUtPmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I8VD4g
PihidWYpOworICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3Vs
dCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VD4sIElkZW50
aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CiAgICAgICAgIAogICAgICAgICAv
LyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9w
dCBpdC4KICAgICAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhh
dCBpcyBzby4KLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9wdFJlZigqYWRk
UmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgICAgIHJldHVybiBhZGRSZXN1
bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3Vs
dC5pdGVyYXRvcjsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElk
ZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCkBAIC0yNDYsMTAgKzI0NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBp
bnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJbXBsPiA+LCBJ
ZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJ
bXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZhbHVlKQorICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgSWRlbnRpZmllclRhYmxlOjphZGQoVSB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsKLSAgICAgICAg
KCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgICAgIEhhc2hTZXQ8
U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWJsZS5hZGQ8VSwgVj4odmFsdWUp
OworICAgICAgICAoKnJlc3VsdC5pdGVyYXRvciktPnNldElzSWRlbnRpZmllcih0cnVlKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKaW5kZXggMmM2MjBiNGFlNTg5ZDFlYzllNmY0NzY5MmU0NDZjZmE4NTYz
ZDQwMS4uMGZmYTA3NmNlYWYwOTYwNGZhYmFiYzBmNjk1N2MxNTZmMWYxYWUzMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5NSwxMCArMTk1LDEwIEBA
IHZvaWQgSlNBcnJheTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPmRl
YWxsb2NhdGVTcGFyc2VNYXAoKTsKIH0KIAotaW5saW5lIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZh
bHVlTWFwOjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKEpTQXJyYXkq
IGFycmF5LCB1bnNpZ25lZCBpKQoraW5saW5lIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJlc3Vs
dCBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkpCiB7
CiAgICAgU3BhcnNlQXJyYXlFbnRyeSBlbnRyeTsKLSAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CisgICAgQWRkUmVzdWx0IHJlc3VsdCA9
IG1fbWFwLmFkZChpLCBlbnRyeSk7CiAgICAgc2l6ZV90IGNhcGFjaXR5ID0gbV9tYXAuY2FwYWNp
dHkoKTsKICAgICBpZiAoY2FwYWNpdHkgIT0gbV9yZXBvcnRlZENhcGFjaXR5KSB7CiAgICAgICAg
IEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoKGNhcGFjaXR5IC0gbV9y
ZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2YodW5zaWduZWQpICsgc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPikpKTsKQEAgLTIwOSwxNCArMjA5LDE0IEBAIGlubGluZSBzdGQ6OnBhaXI8U3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IFNwYXJzZUFycmF5VmFsdWVNYXA6OmFk
ZChKCiAKIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRy
eSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBhZGQoYXJy
YXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQ7CiAKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3Qg
YWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2Fz
ZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAg
Ly8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAt
IHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCAmJiAhYXJyYXktPmlzRXh0
ZW5zaWJsZSgpKSB7Ci0gICAgICAgIHJlbW92ZShyZXN1bHQuZmlyc3QpOworICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIHJlbW92
ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBpbmxpbmUgdm9pZCBT
cGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwg
dW5zaWduZWQgaQogCiBpbmxpbmUgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1h
cDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7Ci0gICAgU3BhcnNlQXJy
YXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBBZGRSZXN1bHQgcmVz
dWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRyeSA9IHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8gc2F2ZSBhIHNlcGFyYXRlIGZpbmQgJiBh
ZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAuCiAgICAgLy8gSW4gdGhl
IHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5LCBhbmQgdGhlIGFycmF5
IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90IHRoZSByaWdodCB0aGluZyB0
byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQgJiYg
IWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAgICByZW1vdmUocmVzdWx0LmZpcnN0KTsK
KyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewor
ICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIHJlamVjdChl
eGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVj
dCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBA
IHZvaWQgSlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBhbHdheXMgYmUgYSBuZXcgZW50cnkgaW4gdGhlIG1h
cCwgc28gbm8gbmVlZCB0byBjaGVjayB3ZSBjYW4gd3JpdGUsCiAgICAgICAgIC8vIGFuZCBhdHRy
aWJ1dGVzIGFyZSBkZWZhdWx0IHNvIG5vIG5lZWQgdG8gc2V0IHRoZW0uCiAgICAgICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkpLmZpcnN0LT5zZWNvbmQuc2V0KGds
b2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkpLml0
ZXJhdG9yLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAgICB9CiAKICAg
ICB2b2lkKiBuZXdSYXdTdG9yYWdlID0gMDsKQEAgLTQzMCwxNSArNDMwLDE1IEBAIGJvb2wgSlNB
cnJheTo6ZGVmaW5lT3duTnVtZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW5kZXgsIFByb3BlcnR5CiAgICAgQVNTRVJUKG1hcCk7CiAKICAgICAvLyAxLiBMZXQgY3VycmVu
dCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5h
bCBtZXRob2Qgb2YgTyB3aXRoIHByb3BlcnR5IG5hbWUgUC4KLSAgICBzdGQ6OnBhaXI8U3BhcnNl
QXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRkKHRoaXMsIGlu
ZGV4KTsKLSAgICBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwID0gJnJlc3VsdC5maXJzdC0+
c2Vjb25kOworICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAt
PmFkZCh0aGlzLCBpbmRleCk7CisgICAgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCA9ICZy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIC8vIDIuIExldCBleHRlbnNpYmxlIGJlIHRo
ZSB2YWx1ZSBvZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgTy4KICAg
ICAvLyAzLiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyBmYWxzZSwg
dGhlbiBSZWplY3QuCiAgICAgLy8gNC4gSWYgY3VycmVudCBpcyB1bmRlZmluZWQgYW5kIGV4dGVu
c2libGUgaXMgdHJ1ZSwgdGhlbgotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKCkpIHsKLSAgICAg
ICAgICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgICAgICAgICBtYXAtPnJlbW92
ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCB0aHJv
d0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0
IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAppbmRleCBhZDk4ZDY2MTkwYjAzY2E1NWM4NGEwMjhjNDg5MzAyYjUx
YjE4YjliLi44OTBmZGY0ZjBhMDk0NGU1ODRiNjZmMWY2NGUzNTgxM2M5NzI0MzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBNYXA6Oml0ZXJhdG9yIGl0
ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIE1hcDo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0
b3I7CisgICAgICAgIHR5cGVkZWYgTWFwOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgICAg
IFNwYXJzZUFycmF5VmFsdWVNYXAoKQogICAgICAgICAgICAgOiBtX2ZsYWdzKE5vcm1hbCkKQEAg
LTg3LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMg
bWF5IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAogICAgICAgICB2b2lkIHB1dChFeGVj
U3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJv
b2w+IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOworICAgICAgICBBZGRSZXN1bHQgYWRkKEpTQXJy
YXkqLCB1bnNpZ25lZCk7CiAgICAgICAgIGl0ZXJhdG9yIGZpbmQodW5zaWduZWQgaSkgeyByZXR1
cm4gbV9tYXAuZmluZChpKTsgfQogICAgICAgICAvLyBUaGlzIHNob3VsZCBBU1NFUlQgdGhlIHJl
bW92ZSBpcyB2YWxpZCAoY2hlY2sgdGhlIHJlc3VsdCBvZiB0aGUgZmluZCkuCiAgICAgICAgIHZv
aWQgcmVtb3ZlKGl0ZXJhdG9yIGl0KSB7IG1fbWFwLnJlbW92ZShpdCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAppbmRleCA4
ZWZiNDA2NWUxNzM5Y2YwNWQ1ZDkxNjZjNzViZWNkODBkZGUzMGZjLi45YmFlOTQwOTc0MDA4NTJh
Y2EwYzAzZjRiNzllNDI1YmI0YzMzMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQg
UHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICAgICAgbV9z
ZXQuYWRkKG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV0uaW1wbCgpKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5zZWNvbmQpCisgICAgICAgIGlm
ICghbV9zZXQuYWRkKGlkZW50aWZpZXIpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmgKaW5kZXggZTM0MDhiMDhiYjI2YWM5NDhmNzdjNzVmMmEzODE0
MTcwODY3ZDQ0MS4uMTI3ZDAyOGUwZjU0MmYyOWI5YTgwY2FhOGI3MTFmMjY2YjQ5YTU4MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lv
bkNoZWNrZXIuaApAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdSZWN1cnNp
b25DaGVja2VyOjpwZXJmb3JtQ2hlY2soKQogICAgIGludCBzaXplID0gbV9leGVjLT5nbG9iYWxE
YXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5zaXplKCk7CiAgICAgaWYg
KHNpemUgPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggJiYgc2l6ZSA+PSBtX2V4ZWMtPmds
b2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCiAgICAgICAgIHJldHVybiB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcigpOwotICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhbV9leGVjLT5nbG9iYWxE
YXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5hZGQobV90aGlzT2JqZWN0
KS5zZWNvbmQ7CisgICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4ZWMtPmdsb2JhbERhdGEo
KS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZChtX3RoaXNPYmplY3QpLmlz
TmV3RW50cnk7CiAgICAgaWYgKGFscmVhZHlWaXNpdGVkKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsgLy8gUmV0dXJuIGVtcHR5IHN0cmluZyB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNp
b24uCiAgICAgcmV0dXJuIEpTVmFsdWUoKTsgLy8gSW5kaWNhdGUgc3VjY2Vzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZlZTQxOWRhNmE3OGY4
MTI2NmJlZTJkNmE0YWY1YzU2ZDllZDk3NTMuLjUyZWIxYzc0OGQzNDcwNTUyMzAxY2FlNWUwMzIx
NjQ5NDM3YTY3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlOjphZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHMKICAgICAv
LyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4gc3RkOjptYWtlX3BhaXIgZnVuY3Rp
b24gdGhhdCB0YWtlcyBydmFsdWUgcmVmZXJlbmNlcy4KICAgICAvLyBXaGVuIGVpdGhlciBvZiB0
aGUgcGFyYW1ldGVycyBhcmUgYml0ZmllbGRzLCB0aGUgQysrIGNvbXBpbGVyIHdpbGwgdHJ5IHRv
IGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3aGljaCBpcyBpbnZhbGlkLiBUbyB3b3JrIGFyb3VuZCB0
aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1ha2UgdGhlIHBhcmFtZXRlciBhbiBydmFsdWUuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI2MSBmb3Ig
bW9yZSBkZXRhaWxzCi0gICAgc3RkOjpwYWlyPFRyYW5zaXRpb25NYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFpcihzdHJ1Y3R1cmUtPm1f
bmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMpLCBzdHJ1
Y3R1cmUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgIFRyYW5zaXRpb25NYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFpcihzdHJ1Y3R1
cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlvdXMp
LCBzdHJ1Y3R1cmUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8g
VGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSEgLSB3ZSBzaG91bGQgb25seSBoaXQgdGhpcyB3aGVu
IGRlc3BlY2lmeWluZy4KLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC5nZXQoKS5zZWNvbmQt
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJh
dG9yLmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAgICAgIEFT
U0VSVCghc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAgICAgICAgbWFw
KCktPnNldChyZXN1bHQuZmlyc3QsIHN0cnVjdHVyZSk7CisgICAgICAgIG1hcCgpLT5zZXQocmVz
dWx0Lml0ZXJhdG9yLCBzdHJ1Y3R1cmUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCAxYmIzY2Q1YmIzZDliZTk2NzgzMTI5ZThlNWFl
MjEzMGQyZThiZjc4Li5mMDFhMGM4MjZiMWM0N2Y3NzRiYTM3MWIzMzJjNmFlM2Q3NGJjODA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAtNzksNiArNzks
OCBAQCBwdWJsaWM6CiAgICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJhdG9yOwogICAgIH07CiAK
KyAgICB0eXBlZGVmIFdURjo6SGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7
CisKICAgICBXZWFrR0NNYXAoKQogICAgIHsKICAgICB9CkBAIC0xMjEsMTcgKzEyMywxOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAgICB9CiAKLSAgICBwYWly
PGl0ZXJhdG9yLCBib29sPiBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBLZXlU
eXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICBBZGRSZXN1bHQgYWRkKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUp
CiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiBp
dGVyID0gbV9tYXAuYWRkKGtleSwgMCk7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAg
ICAgICB0eXBlbmFtZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwg
MCk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgSGFuZGxl
U2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5oZWFwLmhhbmRsZUhlYXAoKS0+YWxsb2NhdGUoKTsKLSAg
ICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7CisgICAgICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7CiAgICAgICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9y
KHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBGaW5hbGl6ZXJDYWxsYmFjazo6ZmluYWxpemVy
Q29udGV4dEZvcihrZXkpKTsKICAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCkt
PndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CiAgICAgICAgICAgICAqc2xvdCA9IHZhbHVlOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpdGVyOworICAgICAgICAvLyBXZWFrR0NNYXAgZXhw
b3NlcyBhIGRpZmZlcmVudCBpdGVyYXRvciwgc28gd2UgbmVlZCB0byB3cmFwIGl0IGFuZCBjcmVh
dGUgb3VyIG93biBBZGRSZXN1bHQuCisgICAgICAgIHJldHVybiBBZGRSZXN1bHQoaXRlcmF0b3Io
cmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KICAgICAKICAgICB2
b2lkIHNldChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUgdmFsdWUpCkBAIC0xNDQsMTIgKzE0
NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAg
cGFpcjx0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fbWFwLmFkZChr
ZXksIDApOwotICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBpdGVyLmZpcnN0LT5zZWNvbmQ7Ci0g
ICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xv
dCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkpIHsKICAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmhlYXAuaGFuZGxlSGVhcCgpLT5h
bGxvY2F0ZSgpOwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+bWFrZVdl
YWsoc2xvdCwgdGhpcywga2V5KTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNs
b3Q7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7CiAgICAgICAg
IH0KICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3Qs
IHZhbHVlKTsKICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAppbmRleCA2MGQ1OTkyOGE0NjdhNjE3ZTJmM2E3ODFl
YmUyMDA1MTVlMzZkOTAwLi45ZGUzOWFkOGEyOTg2MjJjNDMzYTY3ZWI2NGE3MjIwNGRlMTllNmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCkBA
IC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2hpbGRyZW4gPSBuZXcgTWFw
KCk7CiAgICAgCiAgICAgICAgIFByb2ZpbGVUcmVlTm9kZSBuZXdFbnRyeTsKLSAgICAgICAgcGFp
cjxNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQoU3RyaW5nKG5h
bWUpLCBuZXdFbnRyeSk7Ci0gICAgICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJbk1hcCA9ICZy
ZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9j
aGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOworICAgICAgICBQcm9maWxlVHJl
ZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICsr
Y2hpbGRJbk1hcC0+bV9jb3VudDsKICAgICAgICAgcmV0dXJuIGNoaWxkSW5NYXA7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaCBiL1NvdXJjZS9XVEYv
d3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggY2FmYjI2NDllYjYyNDcxYWNjOTZmNGNmMzc4OWVj
MDQ5ZDc0MDBlZS4uZDdkOWU0M2E5YTU1YTFmZGZhODgzZjc4OTdhMTA3Nzk5YTVjZmY3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoQ291bnRlZFNldC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
SW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVm
IHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogICAgICAgICAKICAgICAg
ICAgSGFzaENvdW50ZWRTZXQoKSB7fQogICAgICAgICAKQEAgLTU3LDcgKzU4LDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIC8vIEluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4gZXF1YWwgdmFs
dWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBw
YWlyIG9mIGFuIGludGVyYXRvciB0byB0aGUgbmV3IHZhbHVlJ3MgCiAgICAgICAgIC8vIGxvY2F0
aW9uLCBhbmQgYSBib29sIHRoYXQgaXMgdHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2FzIGFkZGVkLgot
ICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsK
KyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIFJlZHVjZXMgdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSwgYW5kIHJlbW92ZXMgaXQgaWYg
Y291bnQKICAgICAgICAgLy8gZ29lcyBkb3duIHRvIHplcm8sIHJldHVybnMgdHJ1ZSBpZiB0aGUg
dmFsdWUgaXMgcmVtb3ZlZC4KQEAgLTE0MiwxMCArMTQzLDEwIEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSBzdGQ6OnBhaXI8dHlwZW5hbWUg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJhdG9yLCBi
b29sPiBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNv
bnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0
PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaENvdW50ZWRTZXQ8
VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVl
KQogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLmFk
ZCh2YWx1ZSwgMCk7IAotICAgICAgICArK3Jlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7CisgICAgICAgICsrcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291cmNlL1dURi93dGYvSGFz
aE1hcC5oCmluZGV4IGJlN2U5ZWJlZDEzNzkzYmE3OGUwY2FmZDczOTA1YjFlMDRjMzA1NzguLjI2
YTlkOWM1Y2IxNThkM2E1ZmViNzJlYzVjYzg1MGE4ZTYwMTYzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKQEAgLTY2
LDYgKzY2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGl0ZXJh
dG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hU
YWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKQEAgLTk0LDEyICs5NSwxMiBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0IG5vdCBrZXkgaWYga2V5IGlz
IGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIHRo
ZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbGVh
biB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQKLSAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBl
KTsgCisgICAgICAgIEFkZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5
cGUpOwogCiAgICAgICAgIC8vIGRvZXMgbm90aGluZyBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50
CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRo
ZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRk
UmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAg
dm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRv
cik7CkBAIC0xMjIsMTIgKzEyMywxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJik7CiAgICAgICAgIC8vICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgVmFsdWVUeXBlJiwgY29uc3QgVCYpOwogICAgICAgICAvLyAgIHN0YXRpYyB0
cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2RlKTsKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IHBhaXI8aXRl
cmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlwZSk7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBBZGRSZXN1bHQgYWRk
KGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJv
b2w+IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7
CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJ
blJlZmVyZW5jZVR5cGUpOwogCiAgICAgICAgIGNsYXNzIEhhc2hNYXBLZXlzUHJveHkgOiBwcml2
YXRlIEhhc2hNYXAgewogICAgICAgICBwdWJsaWM6CkBAIC0zMTksMzQgKzMyMCwzNCBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGluZSBwYWlyPHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVu
YW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblJlZmVy
ZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
YWRkPEhhc2hNYXBUcmFuc2xhdG9yPFZhbHVlVHJhaXRzLCBIYXNoRnVuY3Rpb25zPiA+KGtleSwg
bWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlwZW5hbWUgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6
c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpIAogICAgIHsK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFw
cGVkKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFkZFJlc3VsdCBy
ZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQg
YW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2
YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmly
c3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUWVBFLCB0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFkZChjb25zdCBU
WVBFJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNsYXRvckFkYXB0
ZXI8VmFsdWVUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPiA+KGtleSwgdmFsdWUpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpB
ZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlwZSYg
a2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAgIHJldHVybiBpbmxp
bmVBZGQoa2V5LCBtYXBwZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFNldC5o
IGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IDMzY2IxNGRhYWI2ODI2ODdmMGFlOGU2
YzJjOGYxYjJiYWVmOGFiOTYuLjFiM2IyZTI4NzMzNDM5YjEwYmI3NTNjOTA0ZDU0ZmZlYzU1ZjI1
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoU2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hU
YWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVy
YXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQg
QWRkUmVzdWx0OwogCiAgICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7CiAKQEAgLTc2LDcgKzc3
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBh
IHBhaXIgb2YgYW4gaW50ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlvbiwgCiAgICAg
ICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQu
Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAg
ICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAogICAgICAgICAvLyBBbiBh
bHRlcm5hdGUgdmVyc2lvbiBvZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3QgYnkgaGFzaGlu
ZyBhbmQgY29tcGFyaW5nCiAgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBlLCB0byBhdm9p
ZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5CkBA
IC04Niw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyAgIHN0YXRpYyB0cmFu
c2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2RlKTsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdGVtcGxhdGUgYXJn
dW1lbnRzIHNvIHRoYXQgY2FsbGVycwogICAgICAgICAvLyBjYW4ganVzdCBwYXNzIHRoZSB0cmFu
c2xhdG9yIGFuZCBsZXQgdGhlIGNvbXBpbGVyIGRlZHVjZSBULgotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4g
YWRkKGNvbnN0IFQmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYpOwogCiAgICAgICAgIHZvaWQgcmVt
b3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CkBA
IC0xNzcsMTQgKzE3OCwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGluZSBwYWlyPHR5
cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46Oml0ZXJhdG9yLCBib29sPiBIYXNoU2V0PFQsIFUsIFY+
OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFNl
dDxULCBVLCBWPjo6QWRkUmVzdWx0IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1ZVR5
cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFsdWUpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdAogICAgIEhh
c2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBUJiB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2Rl
PEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4gPih2YWx1ZSwgdmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaAppbmRleCAwNTcyMmQ5YzU1NmE3OTdiNDE4ODA3MjBkN2NlMzAwNTdmYjVm
NmI2Li45YmQ1NDgyZmFjZWI3MjA5NDRjZTRjNTMxMTc0NzQwYmU0M2JiNmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFi
bGUuaApAQCAtMjk2LDYgKzI5NiwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0
aW9uLCBjb25zdCBVJiwgY29uc3QgVCYgdmFsdWUpIHsgbG9jYXRpb24gPSB2YWx1ZTsgfQogICAg
IH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+IHN0cnVjdCBIYXNoVGFi
bGVBZGRSZXN1bHQgeworICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQoSXRlcmF0b3JUeXBlIGl0
ZXIsIGJvb2wgaXNOZXdFbnRyeSkgOiBpdGVyYXRvcihpdGVyKSwgaXNOZXdFbnRyeShpc05ld0Vu
dHJ5KSB7IH0KKyAgICAgICAgSXRlcmF0b3JUeXBlIGl0ZXJhdG9yOworICAgICAgICBib29sIGlz
TmV3RW50cnk7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgY2xhc3MgSGFzaFRhYmxlIHsKICAg
ICBwdWJsaWM6CkBAIC0zMDUsNiArMzExLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5
cGVkZWYgS2V5IEtleVR5cGU7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVUeXBlOwogICAg
ICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8SGFzaEZ1bmN0aW9ucz4gSWRlbnRp
dHlUcmFuc2xhdG9yVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVBZGRSZXN1bHQ8aXRl
cmF0b3I+IEFkZFJlc3VsdDsKIAogICAgICAgICBIYXNoVGFibGUoKTsKICAgICAgICAgfkhhc2hU
YWJsZSgpIApAQCAtMzMwLDEzICszMzcsMTMgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlu
dCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9CiAgICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKLSAgICAgICAgcGFpcjxp
dGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJ
ZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCB2YWx1ZSk7
IH0KKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVy
biBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwg
dmFsdWUpOyB9CiAKICAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRkKCkgdGhhdCBm
aW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAgICAvLyB3aXRo
IHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJzaW9uIGlm
IHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUuCi0gICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBF
eHRyYT4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGRQYXNzaW5nSGFzaENvZGUo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGQo
Y29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJlc3VsdCBhZGRQ
YXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOwogCiAgICAgICAgIGl0
ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJldHVybiBmaW5kPElkZW50aXR5VHJh
bnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBL
ZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4o
a2V5KTsgfQpAQCAtNjY1LDcgKzY3Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgRXh0cmE+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwg
Ym9vbD4gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCisg
ICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkKGNv
bnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQogICAgIHsKICAgICAgICAgY2hlY2tLZXk8
SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKQEAgLTcwMCw3ICs3MDcsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVu
dHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1h
a2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50
cnkpKQogICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKQEAgLTcxMSw3
ICs3MTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVk
QnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5
OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0
b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50
cnkpLCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKICAg
ICAgICAgICAgICsrcHJvYmVDb3VudDsKQEAgLTczOCwxOSArNzQ1LDE5IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICAgICAgLy8gZm9sbG93IGEgcGl2b3QgZW50cnkgYW5kIHJldHVybiB0aGUg
bmV3IHBvc2l0aW9uLgogICAgICAgICAgICAgS2V5VHlwZSBlbnRlcmVkS2V5ID0gRXh0cmFjdG9y
OjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAgICBleHBhbmQoKTsKLSAgICAgICAgICAgIHBh
aXI8aXRlcmF0b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVyZWRLZXkpLCB0
cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVChwLmZpcnN0ICE9IGVuZCgpKTsKLSAgICAgICAgICAg
IHJldHVybiBwOworICAgICAgICAgICAgQWRkUmVzdWx0IHJlc3VsdChmaW5kKGVudGVyZWRLZXkp
LCB0cnVlKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3IgIT0gZW5kKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAgCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKKyAg
ICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVl
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xh
dG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFt
ZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29k
ZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKKyAgICBpbmxpbmUgdHlwZW5hbWUg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoY29uc3Qg
VCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNo
VHJhbnNsYXRvcj4oa2V5KTsKIApAQCAtNzY4LDcgKzc3NSw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICB1bnNpZ25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKICAgICAgICAgCiAgICAg
ICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25v
d25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gQWRkUmVz
dWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAgICAgICAgaW5pdGlhbGl6
ZUJ1Y2tldCgqZW50cnkpOwpAQCAtNzgzLDE0ICs3OTAsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgICAgICAvLyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBhbmQgcmV0dXJuIHRoZSBuZXcgcG9z
aXRpb24uCiAgICAgICAgICAgICBLZXlUeXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0b3I6OmV4dHJh
Y3QoKmVudHJ5KTsKICAgICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAgcGFpcjxpdGVy
YXRvciwgYm9vbD4gcCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQoZW50ZXJlZEtleSksIHRydWUpOwot
ICAgICAgICAgICAgQVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkpOwotICAgICAgICAgICAgcmV0dXJu
IHA7CisgICAgICAgICAgICBBZGRSZXN1bHQgcmVzdWx0KGZpbmQoZW50ZXJlZEtleSksIHRydWUp
OworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvciAhPSBlbmQoKSk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgaW50ZXJuYWxDaGVja1Rh
YmxlQ29uc2lzdGVuY3koKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUtu
b3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBBZGRSZXN1bHQo
bWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0
Zi9MaXN0SGFzaFNldC5oCmluZGV4IDc5OTQ2NmZhOThjNmRmN2UyNWIyMDY3YzJhMjAwZjQ3OTQ3
M2FjMTIuLjIxZTM4ZDgzYWI0NzA2NzgxYzM3YjE1MWYxZGNlMTEyMjQ5MzJjODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvTGlz
dEhhc2hTZXQuaApAQCAtODEsNiArODEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwgaW5saW5lQ2Fw
YWNpdHksIEhhc2hBcmc+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwgaW5saW5lQ2Fw
YWNpdHksIEhhc2hBcmc+OwogCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQWRkUmVzdWx0PGl0
ZXJhdG9yPiBBZGRSZXN1bHQ7CisKICAgICAgICAgTGlzdEhhc2hTZXQoKTsKICAgICAgICAgTGlz
dEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICAgICAgTGlzdEhhc2hTZXQmIG9wZXJh
dG9yPShjb25zdCBMaXN0SGFzaFNldCYpOwpAQCAtMTI0LDEwICsxMjYsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiBhZGQgaXMgYSBwYWlyIG9m
IGFuIGl0ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFu
ZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQuCi0gICAgICAg
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRk
UmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFs
dWVUeXBlJiBuZXdWYWx1ZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydEJl
Zm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBp
bnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBl
JiBuZXdWYWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbnNlcnRCZWZvcmUoaXRlcmF0b3IsIGNv
bnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYp
OwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CkBAIC02OTUsMjYgKzY5NywyNSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBp
bmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQorICAgIHR5cGVu
YW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCiAg
ICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG1fYWxsb2Nh
dG9yLmdldCgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICBhcHBl
bmROb2RlKCpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFr
ZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgdHlwZW5h
bWUgSW1wbFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VU
cmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhcHBlbmROb2RlKCpyZXN1bHQuaXRlcmF0b3IpOwor
ICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwg
cmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVuYW1lIExpc3RI
YXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExpc3RIYXNoU2V0
PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBW
YWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNh
cGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6
aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQogICAg
IHsKLSAgICAgICAgcGFpcjx0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9j
YXRvci5nZXQoKSk7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgaW5z
ZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25k
KTsKLQorICAgICAgICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faW1w
bC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9jYXRvci5nZXQo
KSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGluc2VydE5v
ZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIEFk
ZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVD
YXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0
eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBW
YWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNh
cGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6
aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlw
ZSYgbmV3VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQoYmVm
b3JlVmFsdWUpLCBuZXdWYWx1ZSk7IAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1JlZlB0ckhhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAppbmRleCBm
NDhhNTljZjYzNzAyMjY0MDQyNTIwM2M4ZTQyZDE2YmVkOGI1MTczLi4wYWYzNmJlNjAyN2ZiNTAw
YmJmZWE1YzIxZGM2ZTA4Y2RmMDE5ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQ
dHJIYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCkBAIC02MCw2
ICs2MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRv
cjsKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFi
bGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAgdm9pZCBz
d2FwKEhhc2hNYXAmKTsKIApAQCAtODYsMTQgKzg3LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtleSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVz
ZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRv
IHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVl
IGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9y
LCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKLSAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblR5cGUpOyAK
KyAgICAgICAgQWRkUmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7
CisgICAgICAgIEFkZFJlc3VsdCBzZXQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7CiAK
ICAgICAgICAgLy8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAg
ICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBs
b2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcg
dmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFk
ZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAotICAgICAgICBwYWlyPGl0ZXJh
dG9yLCBib29sPiBhZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBB
ZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAg
QWRkUmVzdWx0IGFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2
b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKFJhd0tleVR5
cGUpOwpAQCAtMTA0LDggKzEwNSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBNYXBwZWRQ
YXNzT3V0VHlwZSB0YWtlKFJhd0tleVR5cGUpOyAvLyBlZmZpY2llbnQgY29tYmluYXRpb24gb2Yg
Z2V0IHdpdGggcmVtb3ZlCiAKICAgICBwcml2YXRlOgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUp
OwotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoUmF3S2V5VHlwZSwgTWFw
cGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29u
c3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOworICAgICAgICBBZGRSZXN1
bHQgaW5saW5lQWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwogCiAg
ICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0xOTUsNTIgKzE5Niw1MiBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGluZSBw
YWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJv
b2w+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6
QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQo
Y29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkgCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xhdG9yPihrZXks
IG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgcGFpcjx0eXBl
bmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAg
IGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3Vs
dAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aW5saW5lQWRkKFJhd0tleVR5
cGUga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkgCiAgICAgewogICAgICAg
ICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xhdG9yPihrZXksIG1hcHBlZCk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRy
PFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxS
ZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFw
cGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGlubGlu
ZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgICAg
ICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxs
IGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0
IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBl
ZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9y
ZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFt
ZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5
cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFz
aE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoUmF3S2V5VHlwZSBrZXksIE1hcHBlZFBh
c3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNlY29u
ZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsK
KyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlu
bGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdl
IG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6
OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAgTWFwcGVk
VHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAg
cGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBi
b29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVz
dWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgS2V5VHlw
ZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAgIHJldHVybiBp
bmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFp
cjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29s
PgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0
CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQoUmF3S2V5VHlwZSBrZXks
IE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlubGluZUFk
ZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oIGIv
U291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCA1OWJjNGEyOWE5ZDhkNzc1MWIyZGQxZDAz
MWI4NTIzYzY1YjYzNDdkLi41ZTdhNDg0Y2Q4NzY2YmNhZjIyY2E0YzkzZGRjZTk3MGRkMmJhMjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1NwZWN0cnVtLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
YWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEpCiAgICAgewotICAgICAg
ICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50
KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgcmVzdWx0LmZpcnN0
LT5zZWNvbmQgKz0gY291bnQ7CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQg
bG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CisgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCArPSBjb3VudDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbG9uZyBnZXQoY29uc3Qg
VCYga2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAppbmRleCBlYzVkZTcyMjAwZjU3
NWQ3NzRjYzIwZDkxYTkzOGU5ZDlkOWYwMjY5Li4zYTkwM2Y4OTVlMGY5NjVmNDY0ZmVjZjhiMDlj
YmE5MzcyNDBiZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApAQCAtNjMsMTAgKzYzLDEw
IEBAIElkZW50aWZpZXJUYWJsZTo6fklkZW50aWZpZXJUYWJsZSgpCiAgICAgICAgICgqaXRlcikt
PnNldElzSWRlbnRpZmllcihmYWxzZSk7CiB9CiAKLXN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0lt
cGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRkKFN0cmluZ0ltcGwqIHZh
bHVlKQorSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBJZGVudGlmaWVyVGFibGU6OmFk
ZChTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBs
Kj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7Ci0gICAgKCpy
ZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgSGFzaFNldDxTdHJpbmdJ
bXBsKj46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7CisgICAgKCpyZXN1
bHQuaXRlcmF0b3IpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oIGIvU291cmNl
L1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCmluZGV4IGIwMmQxMGQ3YzgxOTFhN2E1ZmU3YjVlN2E3
MjQ0MmY1NjhmZDQ2N2QuLmRiYzViYTZhYzU0Zjg1OGE3MjQ4YjczY2MwOTY5NzY5ZjA5YTNhYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgSWRlbnRpZmll
clRhYmxlIHsKIHB1YmxpYzoKICAgICB+SWRlbnRpZmllclRhYmxlKCk7CiAKLSAgICBzdGQ6OnBh
aXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGQoU3RyaW5nSW1wbCog
dmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkKFN0cmluZ0lt
cGwqIHZhbHVlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIHN0
ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZChVIHZhbHVl
KTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZChVIHZhbHVlKTsKIAog
ICAgIGJvb2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwCmluZGV4IGQ3NzVlN2JiOTRmZmUwNjM2ZGYzM2JhMmRlM2VkNWMzNWM5Zjkx
ZGMuLjY2YmQ3ODUxYTAwNTJkYzRlMTk2YzFiYjQwYTVkM2E4MTM5NWU2MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0aWMgaW5saW5l
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewotICAgIHBhaXI8SGFz
aFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBzdHJpbmdUYWJs
ZSgpLmFkZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1w
bCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nVGFibGUoKS5hZGQ8VCwgSGFzaFRyYW5z
bGF0b3I+KHZhbHVlKTsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRl
ZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBw
YWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQg
PyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgcmV0
dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRvcikg
OiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3IgewpA
QCAtMzAwLDcgKzMwMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjph
ZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIGlmICghci0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgU3RyaW5nSW1wbCogcmVzdWx0ID0g
KnN0cmluZ1RhYmxlKCkuYWRkKHIpLmZpcnN0OworICAgIFN0cmluZ0ltcGwqIHJlc3VsdCA9ICpz
dHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAgICBpZiAocmVzdWx0ID09IHIpCiAgICAg
ICAgIHItPnNldElzQXRvbWljKHRydWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTU4Yzk4ZDdmZjg3NDAzOGU1MTdiNjBkMTk3M2M3
MjhkY2ZhYjc5Li44MzdiOGZiZDIyMDVhZGM5NzQ4NmRkM2YwZThmMDIwNzM4MGY4ZDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiAgICAgQ29vcmRpbmF0aW9uSW5mb01hcDo6aXRlcmF0b3IgY29vcmRpbmF0aW9uSW5m
b0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmZpbmQoZGJJZGVudGlmaWVyKTsKICAg
ICBpZiAoY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID09IG1fY29vcmRpbmF0aW9uSW5mb01hcC5l
bmQoKSkgewogICAgICAgICAvLyBObyBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3IgdGhpcyBEQgot
ICAgICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAu
YWRkKGRiSWRlbnRpZmllciwgQ29vcmRpbmF0aW9uSW5mbygpKS5maXJzdDsKKyAgICAgICAgY29v
cmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmFkZChkYklkZW50
aWZpZXIsIENvb3JkaW5hdGlvbkluZm8oKSkuaXRlcmF0b3I7CiAgICAgfQogCiAgICAgQ29vcmRp
bmF0aW9uSW5mbyYgaW5mbyA9IGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvci0+c2Vjb25kOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9RdW90
YVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1
bS9RdW90YVRyYWNrZXIuY3BwCmluZGV4IDJhMDk2Mjc5OGJiZWYzMjU0ZDAxNzU4Mzg1NzFiZTNi
NDEyNzE2NjcuLjEwYjA4YTJiNzIzY2RhMjkyMGQ0M2RlZmExOGMzMTE1ZWZhMWIyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFU
cmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9t
aXVtL1F1b3RhVHJhY2tlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBRdW90YVRyYWNrZXI6
OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YWJhc2VTaXpl
KQogewogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhKG1fZGF0YUd1YXJkKTsKLSAgICBIYXNoTWFw
PFN0cmluZywgU2l6ZU1hcD46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVNpemVzLmFkZChvcmln
aW5JZGVudGlmaWVyLCBTaXplTWFwKCkpLmZpcnN0OworICAgIEhhc2hNYXA8U3RyaW5nLCBTaXpl
TWFwPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlU2l6ZXMuYWRkKG9yaWdpbklkZW50aWZpZXIs
IFNpemVNYXAoKSkuaXRlcmF0b3I7CiAgICAgaXQtPnNlY29uZC5zZXQoZGF0YWJhc2VOYW1lLCBk
YXRhYmFzZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggMDY0OTdhNGIwOWRjYTBmNDFk
Mjc4MzkzZWFkMzc2ZmNlZWJhZmM2Ny4uMDc0Yzc0ZWRmOGViZTUzN2IzNmYxNWY5NGE0N2U3ZDE0
MWRmMzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMTEsNiArMTEsMTYgQEAgTElTVChBUFBFTkQg
V2ViQ29yZV9JRExfSU5DTFVERVMKICAgICBiaW5kaW5ncy9qcwogKQogCitJRiAoUE9SVCBNQVRD
SEVTICJCbGFja0JlcnJ5IikKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9JTkNMVURFUwor
ICAgICAgICB0ZXN0aW5nL2pzCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJ
TEVTCisgICAgICAgIHRlc3RpbmcvSW50ZXJuYWxzLmlkbAorICAgICAgICB0ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsCisgICAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAKICAgICBiaW5kaW5n
cy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCmluZGV4IDJjMGU5NDgzNmYzYzY0NzIy
MjJhYjY3MmQ0MzM3NzdmM2UxYTYwNzcuLjIxNmI5NDVjNDliOTExZTNmNDVlZmU1YTdlNGMxMzI5
NmYzMGViMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVj
dEhhc2hUYWJsZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVj
dEhhc2hUYWJsZU1hcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaE1h
cDxjb25zdCBKU0M6Okhhc2hUYWJsZSosIEpTQzo6SGFzaFRhYmxlPjo6aXRlcmF0b3IgaXRlciA9
IG1fbWFwLmZpbmQoc3RhdGljVGFibGUpOwogICAgICAgICBpZiAoaXRlciAhPSBtX21hcC5lbmQo
KSkKICAgICAgICAgICAgIHJldHVybiAmaXRlci0+c2Vjb25kOwotICAgICAgICByZXR1cm4gJm1f
bWFwLnNldChzdGF0aWNUYWJsZSwgSlNDOjpIYXNoVGFibGUoKnN0YXRpY1RhYmxlKSkuZmlyc3Qt
PnNlY29uZDsKKyAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpTQzo6SGFz
aFRhYmxlKCpzdGF0aWNUYWJsZSkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMDA1
MGE3MzE1N2ZkZmNiNWRlMDc2MWYzMjVmNmZkMTVhYzAwMDc2ZC4uYzExZjYwMTAzOGE2NjAwNjli
YWE1ZDk5MjZjYzI1ZDJiZWQwNDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0
cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHUKIHsKICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+
c3RydWN0dXJlcygpOwogICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8p
KTsKLSAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpKS5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFz
c0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAK
IEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkJiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IGIwNDlkOWIyY2FlNTBjYjNjMzMxNmY3YjM4MjAwZDhjODdmZDYwZGQuLjdl
ZWJjNzdkNDAxMWI4NDI4ZTFhMzdkZGI4YmM0OTQ2YjNmN2VmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBQYXJh
bWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgaWYgKHNldElubGluZUNhY2hlZFdyYXBwZXIo
d29ybGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IEpTQzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPiBwYXNzV2Vhaygqd29ybGQtPmdsb2JhbERhdGEo
KSwgd3JhcHBlciwgd3JhcHBlck93bmVyKHdvcmxkLCBkb21PYmplY3QpLCB3cmFwcGVyQ29udGV4
dCh3b3JsZCwgZG9tT2JqZWN0KSk7Ci0gICAgICAgIHBhaXI8RE9NT2JqZWN0V3JhcHBlck1hcDo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHdvcmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmplY3Qs
IHBhc3NXZWFrKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQp
OworICAgICAgICBET01PYmplY3RXcmFwcGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gd29ybGQt
Pm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWspOworICAgICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXgg
YWRjZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMC4uNzRmMzViMGI3OTJjMWMw
NjAzN2QxYWRlZjNiMjMxMzY1OGE5MmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNs
YXNzOjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCksIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5z
KCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8
SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6
c19pbmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNz
OjpzX2luZm8sIHRlbXApLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGM4ZjE2ZjVhOTYxNjViZThlMTNkYjJiZWI1ZWFiMTYwODM3
ZTkyMGMuLmJkZWU0Njg3ZDZjMDQyMTE2M2VlODljM2IwMTBjNmE0YjhlN2RlZWEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtODIsMTEgKzgyLDExIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0
ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnCiAgICAgQVNTRVJU
X0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOwogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAK
LSAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3Bh
Z2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAg
ICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsKKyAgICBQYWdlTGlz
dGVuZXJzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmFkZChwYWdl
LCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OwogCi0gICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVy
cyA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7CiAK
ICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBmNDk1Y2VkYzg2MzlmMGZm
M2FjOTdjYzM2M2M2MzdhYzQxY2QzMjUwLi4xMGRlZDcwMDcwNzk0MDIzZGM3ZWQyMTI5OWZjZmIy
NDg2MTIxN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAg
ICAgICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAgICBp
ZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRN
YXAoKSkuZmlyc3Q7CisgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNv
dXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcmF0b3I7CiAgICAgaWYgKGl0
LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSkpCiAgICAg
ICAgIHJldHVybiAiIjsKICAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVO
dW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2ZjBhODE0ODc0MTM3
ZjUyNWJjNDk1MzZlMzE0MmZhMTg4MjJlZGUuLjdhYzE1NWNjZTZjYzJhNGRkOWFiN2JhYzc3ZDE1
MDk0OGVhZmMwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHJpdmF0ZToKICAg
ICBib29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAgICB7CiAgICAg
ICAgIC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCi0gICAgICAgIHBh
aXI8T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9i
amVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7CisgICAgICAgIE9iamVjdFBvb2w6OkFkZFJlc3Vs
dCBhZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUo
KSk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAg
ICAgICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwotICAgICAgICAg
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGl0ZXIuZmlyc3QtPnNlY29uZCkgPCBtX29i
amVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoaXRlci5maXJz
dC0+c2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihhZGRS
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAg
ICAgIHdyaXRlT2JqZWN0SW5kZXgoYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzI2LDEwICs3MjYs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ICAgIHsKICAgICAgICAgVVN0cmluZyBzdHIgPSBpZGVudC51c3RyaW5nKCk7Ci0gICAgICAgIHBh
aXI8U3RyaW5nQ29uc3RhbnRQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fY29uc3RhbnRQ
b29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBpZiAo
IWl0ZXIuc2Vjb25kKSB7CisgICAgICAgIFN0cmluZ0NvbnN0YW50UG9vbDo6QWRkUmVzdWx0IGFk
ZFJlc3VsdCA9IG1fY29uc3RhbnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5z
aXplKCkpOworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAg
ICB3cml0ZShTdHJpbmdQb29sVGFnKTsKLSAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoaXRl
ci5maXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoYWRkUmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggNmZkZjM3MzQyZTAz
MGNkNmVlZGE1ZjcxMGFiOTJlYTkxOTNhNDBkMC4uNWMzMzU5Mzc3MDVlZjIzYzg2ZDY2NzBiYjFj
YjkzODdhZjM2ODEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBW
OE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5j
cHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChO
UFAgbnBwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgRE9NV2luZAogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaXRlciA9IHN0YXRpY1Y4TlBP
YmplY3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFzaCwgVjhOUE9iamVjdFZlY3RvcigpKS5maXJzdDsg
CisgICAgICAgIGl0ZXIgPSBzdGF0aWNWOE5QT2JqZWN0TWFwKCktPnNldCh2OE9iamVjdEhhc2gs
IFY4TlBPYmplY3RWZWN0b3IoKSkuaXRlcmF0b3I7CiAgICAgfQogCiAgICAgVjhOUE9iamVjdCog
djhucE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KF9OUE5fQ3JlYXRlT2Jq
ZWN0KG5wcCwgJlY4TlBPYmplY3RDbGFzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZp
ZXJSZXAuY3BwCmluZGV4IGZlZDQ3Y2E1ZWVlODY2NjAxNjI0NThlM2UxMDRmNDYxMmYxZGY4ZmYu
LjJhY2YxNDE1M2QxZGI5ZTEyYjcyNTU4YTUzODhkOTg2ZmY4YTVlODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBJZGVudGlmaWVy
UmVwKiBJZGVudGlmaWVyUmVwOjpnZXQoaW50IGludElEKQogICAgICAgICByZXR1cm4gaWRlbnRp
ZmllcjsKICAgICB9CiAgICAgCi0gICAgcGFpcjxJbnRJZGVudGlmaWVyTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gaW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7IAotICAgIGlm
IChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQp
OwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElE
KTsKKyAgICBJbnRJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gaW50SWRlbnRpZmll
ck1hcCgpLmFkZChpbnRJRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAg
ICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKICAgICAgICAgCi0gICAg
ICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICBp
ZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICB9CiAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwg
SWRlbnRpZmllclJlcCo+IFN0cmluZ0lkZW50aWZpZXJNYXA7CkBAIC05MywxNSArOTMsMTUgQEAg
SWRlbnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAg
ICAgIHJldHVybiAwOwogICAKICAgICBVU3RyaW5nIHN0cmluZyA9IHN0cmluZ1RvVVN0cmluZyhT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSkpOwot
ICAgIHBhaXI8U3RyaW5nSWRlbnRpZmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0
cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7Ci0gICAgaWYgKHJlc3Vs
dC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAg
ICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7CisgICAg
U3RyaW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZpZXJN
YXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7
CisgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKG5hbWUpOwogICAgICAgICAK
LSAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAg
ICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0K
ICAgICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBib29sIElkZW50aWZpZXJSZXA6OmlzVmFsaWQoSWRl
bnRpZmllclJlcCogaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
CmluZGV4IDJjYmU5MjNmNWQwMGEyMTJiYTY5MDRhYmJiNjQxMWY5NWUzMDU0MzEuLjgzOTg2YWY1
ODNjNTkwNDJmMWJmNzc3NTEyMDdhODAzNTNhZDEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8
Um9vdE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5k
KHJvb3RPYmplY3QpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkgewogICAgICAg
ICAgICAgcm9vdE9iamVjdC0+YWRkSW52YWxpZGF0aW9uQ2FsbGJhY2soJm1faW52YWxpZGF0aW9u
Q2FsbGJhY2spOwotICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFkZChyb290T2JqZWN0LCBKU1Rv
TlBPYmplY3RNYXAoKSkuZmlyc3Q7CisgICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJvb3RP
YmplY3QsIEpTVG9OUE9iamVjdE1hcCgpKS5pdGVyYXRvcjsKICAgICAgICAgfQogCiAgICAgICAg
IEFTU0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgPT0gaXRlci0+c2Vjb25kLmVuZCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggYjk4OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNTIx
OTA5N2NlNGRmZDY5Y2NkOGZiYTQ3Mjk5OTI4MGNkY2RkN2RjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyNDcsNyAr
MTI0Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwcm9wCiBzdGF0aWMgdm9pZCBsb2dVbmltcGxl
bWVudGVkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJRCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEhhc2hTZXQ8aW50PiwgcHJvcGVydHlJRFNldCwgKCkpOwotICAgIGlmICghcHJvcGVydHlJ
RFNldC5hZGQocHJvcGVydHlJRCkuc2Vjb25kKQorICAgIGlmICghcHJvcGVydHlJRFNldC5hZGQo
cHJvcGVydHlJRCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HX0VSUk9S
KCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMn
LiIsIGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlE
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTM2NzM1
YWZiNmIxNzM0NzE3MDg2N2U3NDg0MTdkN2UzZDY3MmU0Yi4uZGQ5MDRkMzdmYjk1NGU0NGRiYTY1
Mzg3NjczNTgzMTE5OGZhZDNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291
cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICB1
bnNpZ25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsg
MSkgPDwgNiB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSA8PCA0CiAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSA9PSBUZXh0
T3JpZW50YXRpb25VcHJpZ2h0ID8gOCA6IDApIHwgKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlv
bigpID09IFZlcnRpY2FsID8gNCA6IDApIHwgKHN5bnRoZXRpY0JvbGQgPyAyIDogMCkgfCAoc3lu
dGhldGljSXRhbGljID8gMSA6IDApOwogCi0gICAgU2ltcGxlRm9udERhdGEqJiBjYWNoZWREYXRh
ID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNp
bXBsZUZvbnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwg
MCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoY2FjaGVkRGF0YSkKICAgICAgICAgcmV0dXJu
IGNhY2hlZERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXgg
NmQyMmZkY2NkMGQ1NzlkMDhjNGE2NWMyZTZlNWZmYmJiNWEyNGZhNS4uZTAwMmYyZjhmMDE3MGU5
OGNhNTZkNzFmZTVjZGI5N2JiZWE2MmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9u
dEZhY2VSdWxlKGNvbnN0IENTU0ZvbnRGYWNlUnVsZSogZm9udEZhY2VSdWxlKQogICAgICAgICBp
ZiAoZmFtaWx5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMg
PSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAg
ICAgICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4gPiYgZmFtaWx5Rm9udEZh
Y2VzID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNv
bmQ7CiAgICAgICAgIGlmICghZmFtaWx5Rm9udEZhY2VzKSB7CiAgICAgICAgICAgICBmYW1pbHlG
b250RmFjZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPik7CiAK
QEAgLTQ4NywxMyArNDg3LDEzIEBAIEZvbnREYXRhKiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnRE
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiAgICAgICAgIHJl
dHVybiBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9u
LCBmYW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaE1hcDx1bnNpZ25lZCwgUmVm
UHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUgPSBt
X2ZvbnRzLmFkZChmYW1pbHksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhh
c2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPiA+JiBzZWdtZW50
ZWRGb250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFtaWx5LCBudWxscHRyKS5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2VDYWNoZSkKICAgICAgICAgc2VnbWVu
dGVkRm9udEZhY2VDYWNoZSA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8
Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFz
ayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAKLSAgICBSZWZQdHI8Q1NTU2VnbWVu
dGVkRm9udEZhY2U+JiBmYWNlID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01h
c2ssIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYg
ZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0gQ1NTU2VnbWVudGVk
Rm9udEZhY2U6OmNyZWF0ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50
ZWRGb250RmFjZS5jcHAKaW5kZXggZTNkOWI3NzAxMzBhMDM1MTBlMDk0NmJkNzVmNTRjMzljOTk3
MjAyNS4uY2Y5ZWM5ZTJlZDJmOWZlZjJiYmQ5NGZmNjVlMGFhZTMyYTM4NDEwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC0xMDYsNyArMTA2LDcg
QEAgRm9udERhdGEqIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpnZXRGb250RGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGkKICAgICBGb250VHJhaXRzTWFzayBkZXNpcmVkVHJh
aXRzTWFzayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAgICAgdW5zaWduZWQgaGFz
aEtleSA9ICgoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCAoRm9u
dFRyYWl0c01hc2tXaWR0aCArIDEpKSB8ICgoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkg
PT0gVmVydGljYWwgPyAxIDogMCkgPDwgRm9udFRyYWl0c01hc2tXaWR0aCkgfCBkZXNpcmVkVHJh
aXRzTWFzazsKIAotICAgIFNlZ21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRh
VGFibGUuYWRkKGhhc2hLZXksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU2VnbWVudGVkRm9udERh
dGEqJiBmb250RGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlcmF0b3It
PnNlY29uZDsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCAzMWE4
N2FmMGMzYjM0ZjhlNjZmNzQ4ZmExMTZmZGIxN2U0NTQ3ZDMxLi4wNDFkNmM4MjQ1MjNkMmYyOWI1
NjJmYjFjMjQ0ZjUyNDBjMDZjMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVB
cHBseVByb3BlcnR5LmNwcApAQCAtMTAwNCw3ICsxMDA0LDcgQEAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAgICAgICBJ
dGVyYXRvciBlbmQgPSBwYXJlbnRNYXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQg
PSBwYXJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDb3Vu
dGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGly
ZWN0aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMm
IGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRl
cmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQp
IHsKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQgPSBpdC0+c2Vjb25kLm1fcmVz
ZXQ7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSBpdC0+c2Vjb25k
Lm1fcmVzZXRWYWx1ZTsKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHBhaXItPmZpcnN0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSktPmdl
dEludFZhbHVlKCk7Ci0gICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9
IG1hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5h
ZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNv
bmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAg
ICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBkaXJl
Y3RpdmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCmluZGV4IGVjMmY5NzIwNjUyYmMzODA4YWI1YTBhMjA2YzVkOGIwNWRlMWYzODYu
LmU1MjJhM2NjYjkyMGQxOTZiODIxZWU1MWY5MmJlNzYzMWFhZDY0Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQ5NiwxMCArNDk2LDEwIEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVldHModW5zaWduZWQgZmlyc3ROZXcs
IGNvbnN0IFZlY3RvcjxSCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAgICAgY29uc3Qg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29wZShjc3NTaGVldCk7CiAgICAgICAg
IGlmIChzY29wZSkgewotICAgICAgICAgICAgcGFpcjxTY29wZWRSdWxlU2V0TWFwOjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAg
IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7Ci0gICAg
ICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC0+YWRkUnVsZXNGcm9tU2hlZXQoY3NzU2hl
ZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgICAgICAgICAgU2NvcGVkUnVsZVNldE1h
cDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmFkZChzY29wZSwg
bnVsbHB0cik7CisgICAgICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgUnVsZVNl
dCgpKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5hZGRSdWxlc0Zy
b21TaGVldChjc3NTaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMzgwLDcgKzIzODAsNyBAQCB2b2lkIFJ1
bGVTZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBt
YXAsIGNvbnN0IFJ1bGVEYQogewogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm47Ci0gICAg
T3duUHRyPFZlY3RvcjxSdWxlRGF0YT4gPiYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0ciku
Zmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1h
cC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcnVsZXMpCiAg
ICAgICAgIHJ1bGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSdWxlRGF0YT4pOwogICAgIHJ1bGVz
LT5hcHBlbmQocnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBj
NDZjNzA0N2M1MDBlNGIyODNmM2Q3ZWM1ODRiZDliOGU5MzQ2ZWVhLi4wNWJhNTQ5NTAyYWZiODc2
NzdmMjUzMTJiZjEzYWI2NDk3NjlhNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cApAQCAtNTUsMTAgKzU1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVudCkKICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKIAogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPElkZW50aWZpZXJWYWx1
ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2lkZW50aWZpZXJWYWx1ZUNhY2hlLmFk
ZChpZGVudCwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50
cnkuZmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlk
ZW50KTsKLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJZGVudGlmaWVyVmFs
dWVDYWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gbV9pZGVudGlmaWVyVmFsdWVDYWNoZS5hZGQoaWRl
bnQsIGR1bW15VmFsdWUpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRy
eS5pdGVyYXRvci0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
aWRlbnQpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5z
aWduZWQgcmdiVmFsdWUpCkBAIC03OCwxMCArNzgsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVl
KQogICAgICAgICBtX2NvbG9yVmFsdWVDYWNoZS5jbGVhcigpOwogCiAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8Q29sb3JWYWx1ZUNhY2hlOjppdGVy
YXRvciwgYm9vbD4gZW50cnkgPSBtX2NvbG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1bW15
VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNv
bmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOwotICAgIHJldHVy
biBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0IGVu
dHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKKyAgICBp
ZiAoZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7CisgICAgcmV0dXJuIGVudHJ5
Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUpCkBAIC0xMTcsMTUgKzExNywxNSBAQCBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJp
bWl0aQogICAgIH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsK
LSAgICBwYWlyPEludGVnZXJWYWx1ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBjYWNo
ZS0+YWRkKGludFZhbHVlLCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAg
ICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZSwgdHlwZSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSW50ZWdlclZh
bHVlQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFsdWUsIGR1bW15VmFs
dWUpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5pdGVyYXRvci0+
c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgcmV0
dXJuIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZSkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiB2YWx1ZSA9IG1f
Zm9udEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5hbWUsIDApLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNh
Y2hlLmFkZChmYW1pbHlOYW1lLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUp
CiAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTM4
LDcgKzEzOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VW
YWx1ZUNhY2hlLnNpemUoKSA+IG1heGltdW1Gb250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9m
b250RmFjZVZhbHVlQ2FjaGUuY2xlYXIoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2
YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7
CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4mIHZhbHVlID0gbV9mb250RmFjZVZhbHVlQ2FjaGUu
YWRkKHN0cmluZywgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICB2YWx1ZSA9IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKHN0cmluZywgY29udGV4dFN0
eWxlU2hlZXQpOwogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2Vk
UmFkaW9CdXR0b25zLmNwcAppbmRleCA0NzBkYTJhZDVjNzNiMTc5MmFlNjIzZDk0ODI2OGI4ZDY1
NWU2YzU4Li5lNjcyMzI5YWY4ZGUzNzhiZWZkZmMxNGY4YWNiZDBmMmVjMGM3NDA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgUmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50
KiBidXR0b24pCiB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBi
dXR0b24pCiB7CiAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAo
IW1fbWVtYmVycy5hZGQoYnV0dG9uKS5zZWNvbmQpCisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1
dHRvbikuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgZ3JvdXBXYXNWYWxp
ZCA9IGlzVmFsaWQoKTsKICAgICBpZiAoYnV0dG9uLT5yZXF1aXJlZCgpKQpAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQpCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQogICAgICAgICBtX25hbWVU
b0dyb3VwTWFwID0gYWRvcHRQdHIobmV3IE5hbWVUb0dyb3VwTWFwKTsKIAotICAgIE93blB0cjxS
YWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+
bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5maXJzdC0+c2Vj
b25kOworICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3Vw
TWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdy
b3VwPigpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JvdXApCiAgICAgICAgIGdyb3Vw
ID0gUmFkaW9CdXR0b25Hcm91cDo6Y3JlYXRlKCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBj
YmFhYTRlZmVjMDE3YjM2MjJiNjg0OTRjZGU0ZjE5MzFjY2FiZDhmLi5jNWNiM2FkOWY2ZWFiNzhk
ODllNWQ2N2VhOWM0MzUyMzIyOTdlMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
TGlzdE11dGF0aW9uU2NvcGUuY3BwCkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBDaGlsZExpc3RN
dXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6d2lsbFJlbW92ZUNoaWxk
KE5vZGUqIHQKIAogdm9pZCBDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxh
dGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKIHsKLSAgICBw
YWlyPFNjb3BpbmdMZXZlbE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fc2NvcGluZ0xl
dmVscy5hZGQodGFyZ2V0LCAxKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAg
KysocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIFNjb3BpbmdMZXZlbE1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fc2NvcGluZ0xldmVscy5hZGQodGFyZ2V0LCAxKTsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgICsrKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMWU0MjRm
Nzg3YWZiMzE4ZmU0ZjMxZTIwMWE0YmMwZjdmZGY0YTk4My4uMDdkMDBmNzc0NDFmNTZiMGYxMmE3
ZDljNjY5ZDQyYzljMTVjYmVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTIxLDcg
KzQ1MjEsNyBAQCBIVE1MQWxsQ29sbGVjdGlvbiogRG9jdW1lbnQ6OmFsbCgpCiAKIEhUTUxDb2xs
ZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX3dp
bmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cikuZmlyc3Qt
PnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1f
d2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVy
YXRvci0+c2Vjb25kOwogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9
IEhUTUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUp
OwogICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpOwpAQCAtNDUyOSw3ICs0NTI5LDcgQEAgSFRN
TENvbGxlY3Rpb24qIERvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rp
b24+JiBjb2xsZWN0aW9uID0gbV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1l
LmltcGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xs
ZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQo
bmFtZS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjb2xsZWN0
aW9uKQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVhdGUodGhp
cywgRG9jdW1lbnROYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQo
KTsKQEAgLTQ5MjIsNyArNDkyMiw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIERvY3VtZW50
OjpnZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QKIAogSFRNTENh
bnZhc0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3ND
YW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwg
MCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIGVsZW1lbnQg
PSBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBlbGVtZW50Lmdl
dCgpOwpAQCAtNTcyNSwxMiArNTcyNSwxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVu
dDo6Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBlTmFtZXMpCiAgICAgLy8gSW4gdGhpcyBjYXNl
IHdlIG5lZWQgdG8gY3JlYXRlIGFuIHVuaXF1ZSBzdHJpbmcgaWRlbnRpZmllciB0byBtYXAgc3Vj
aCByZXF1ZXN0IGluIHRoZSBjYWNoZS4KICAgICBTdHJpbmcgbG9jYWxUeXBlTmFtZXMgPSB0eXBl
TmFtZXMuaXNOdWxsKCkgPyBTdHJpbmcoImh0dHA6Ly93ZWJraXQub3JnL21pY3JvZGF0YS91bmRl
ZmluZWRJdGVtVHlwZSIpIDogdHlwZU5hbWVzOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0
YTo6TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG5vZGVM
aXN0cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlz
dD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVEYXRhOjpNaWNyb0Rh
dGFJdGVtTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbm9kZUxpc3RzLT5tX21pY3JvRGF0
YUl0ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPE1pY3JvRGF0YUl0ZW1MaXN0PiBsaXN0ID0g
TWljcm9EYXRhSXRlbUxpc3Q6OmNyZWF0ZSh0aGlzLCB0eXBlTmFtZXMpOwotICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDViODk5YjNmNTc4YTI3NDM5ODI0
ODU5OGI5ZDI5YWQ5ODhmMDAzNmUuLjU0OTQwODI1MjhiMjkzMzVlMGM1Mzc3ZTcwYjM0ZDc0ZDU1
MjI1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIGJvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChl
dmVudC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQo
ZXZlbnQpLnNlY29uZDsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2
ZW50KS5pc05ld0VudHJ5OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsg
Ly8gSXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KICAgICAKICAg
ICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQo
UGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQoKSkuc2Vj
b25kKQorICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5n
ZXQoKSkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsRXZlbnQtPnNl
dFRhcmdldCh0YXJnZXQpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1
ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBm
b3Igd2hlcmUgd2Ugc2hvdWxkIHN0b3AuCiAgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250
YWlucygwKSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5zZWNv
bmQ7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5pc05ld0VudHJ5
OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5v
dCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KIAogICAgIFJlZlB0cjxEb2N1bWVudEV2
ZW50UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHAKaW5kZXggYmNiMjNiNDk2MmY2NDY2YmI2MWI4YWViYWZhNDA1ZmVlODhlOTMw
My4uMDgyYWEwNzQwYTcxY2NkZjUwZTFkNDJkMjNkMzE3ZTYzYWYyZjRkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAgLTY5LDE0ICs2OSwxNCBAQCB2b2lk
IERvY3VtZW50T3JkZXJlZE1hcDo6YWRkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCog
ZWxlbWVudCkKICAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGtleSkpIHsKICAg
ICAgICAgLy8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBhbHJlYWR5IGluIG1fZHVwbGljYXRl
Q291bnRzLCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCiAgICAgICAgIC8vIGFsc28gbm90IGFscmVh
ZHkgaW4gbV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRoYXQgYWRkIHN1Y2NlZWRzLCB3ZSdy
ZSBkb25lLgotICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1f
bWFwLmFkZChrZXksIGVsZW1lbnQpOwotICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkKKyAg
ICAgICAgTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgZWxlbWVudCk7
CisgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAvLyBUaGUgYWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2Fj
aGVkIGluIG1fbWFwLgogICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0
aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcAogICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBr
ZXkgc28gZ2V0IHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgotICAgICAg
ICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGFk
ZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRo
IHRoaXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ck1hcC5jcHAKaW5kZXggNzc0ZTY2NTc0YTZiY2MxZGVjZmE5NjY5NjNkYmE5NjBhYTk5YzQ0OS4u
YzFmZDRkN2M5NTdhNjRiZmY3ODhmOTAxZTYxZGUwMWNhMDkyMjc3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTM0LDExICsxMzQsMTEgQEAgYm9vbCBFdmVu
dExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW4KICAgICB9CiAKICAgICBpZiAobV9oYXNoTWFwKSB7Ci0gICAgICAgIHBh
aXI8RXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2hhc2hN
YXAtPmFkZChldmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkK
LSAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IEV2ZW50TGlz
dGVuZXJWZWN0b3IpOworICAgICAgICBFdmVudExpc3RlbmVySGFzaE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1faGFzaE1hcC0+YWRkKGV2ZW50VHlwZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
YWRvcHRQdHIobmV3IEV2ZW50TGlzdGVuZXJWZWN0b3IpOwogCi0gICAgICAgIHJldHVybiBhZGRM
aXN0ZW5lclRvVmVjdG9yKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSk7CisgICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKHJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAg
aWYgKCFtX3NpbmdsZUV2ZW50TGlzdGVuZXJWZWN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0
ODBlNWJiN2Y0ZWJmNzA5MDFlZTEyOGQwN2M4NTcwNTBkODQwNDc0Li4zMzZlMWJmN2FiMjRmM2Q0
ODgwYmExNTc2ZGZkZjIzN2ViY2EyMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUsOSArMTg1
LDkgQEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAKICAgICAgICAgICAgICAgICAvLyBU
YWcgc3RhdHMKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIHNp
emVfdD46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+
dGFnTmFtZSgpLCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kKys7CisgICAgICAgICAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIHNpemVfdD46OkFkZFJlc3VsdCByZXN1bHQgPSBwZXJUYWdDb3VudC5h
ZGQoZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCsr
OwogCiAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVE
YXRhID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVuZ3RoKCk7CkBAIC0xNjEyLDEyICsxNjEyLDEy
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0
b20gPSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNo
ZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVM
aXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKLSAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVM
aXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05v
ZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVO
b2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7
CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
VGFnTm9kZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxUYWdO
b2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywgc3RhckF0b20sIGxvY2Fs
TmFtZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOyAgIAogfQogCkBAIC0xNjM1LDM2ICsxNjM1LDM2IEBAIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVCiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRvbSA9IG5hbWU7CiAKLSAgICBw
YWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZU5TOjpBZGRS
ZXN1bHQgcmVzdWx0CiAgICAgICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3Rz
KHRoaXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
bG9jYWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOwotICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5m
aXJzdC0+c2Vjb25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1
cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAg
ICAgUmVmUHRyPFRhZ05vZGVMaXN0PiBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBu
YW1lc3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5TmFtZShj
b25zdCBTdHJpbmcmIGVsZW1lbnROYW1lKQogewotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6
Ok5hbWVOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZW5zdXJlUmFyZURh
dGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX25hbWVOb2RlTGlzdENhY2hlLmFkZChlbGVt
ZW50TmFtZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFz
c1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05v
ZGVEYXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGVuc3VyZVJhcmVE
YXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxl
bWVudE5hbWUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBS
ZWZQdHI8TmFtZU5vZGVMaXN0PiBsaXN0ID0gTmFtZU5vZGVMaXN0OjpjcmVhdGUodGhpcywgZWxl
bWVudE5hbWUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05v
ZGVEYXRhOjpDbGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBO
b2RlTGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0CiAg
ICAgICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNz
Tm9kZUxpc3RDYWNoZS5hZGQoY2xhc3NOYW1lcywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25k
KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNv
bmQpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVm
UHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8Q2xh
c3NOb2RlTGlzdD4gbGlzdCA9IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBjbGFzc05hbWVz
KTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
IH0KIApAQCAtMjU5MSw5ICsyNTkxLDkgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNl
cnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogICAgICAg
ICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gcmVnaXN0
cnktPmF0KGkpLmdldCgpOwogICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxkUmVj
ZWl2ZU11dGF0aW9uRnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAgICAg
ICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucyA9IHJl
Z2lzdHJhdGlvbi0+ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNo
TWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cz46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+
b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IGRl
bGl2ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQg
PSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25z
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CiAKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjYwNCw5ICsyNjA0LDkgQEAgdm9pZCBOb2RlOjpj
b2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIqLAogICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVn
aXN0cmF0aW9uID0gKml0ZXI7CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRS
ZWNlaXZlTXV0YXRpb25Gcm9tKHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAg
ICAgICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0g
cmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhh
c2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRp
b25zPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9u
LT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0g
ZGVsaXZlcnlPcHRpb25zOworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25P
YnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlv
bnMpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmNwcAppbmRleCBhNzQyNjI5NWVmMDY0ZWJlOWMwZmFkZWYwZjY3MDFkNTE2NThkYTNlLi5lMDg1
NTA3MGE3Y2IzMjUzNGNjYmY4YWI4ZDA1MjY2N2RhMzE5ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5p
dChjb25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0b21pY1N0cmluZyYgbCwgY29uc3QgQXRv
CiAgICAgaWYgKCFnTmFtZUNhY2hlKQogICAgICAgICBnTmFtZUNhY2hlID0gbmV3IFFOYW1lU2V0
OwogICAgIFF1YWxpZmllZE5hbWVDb21wb25lbnRzIGNvbXBvbmVudHMgPSB7IHAuaW1wbCgpLCBs
LmltcGwoKSwgbi5pc0VtcHR5KCkgPyBudWxsQXRvbS5pbXBsKCkgOiBuLmltcGwoKSB9OwotICAg
IHBhaXI8UU5hbWVTZXQ6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnTmFtZUNhY2hlLT5h
ZGQ8UXVhbGlmaWVkTmFtZUNvbXBvbmVudHMsIFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I+KGNv
bXBvbmVudHMpOwotICAgIG1faW1wbCA9ICphZGRSZXN1bHQuZmlyc3Q7ICAgIAotICAgIGlmICgh
YWRkUmVzdWx0LnNlY29uZCkKKyAgICBRTmFtZVNldDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdO
YW1lQ2FjaGUtPmFkZDxRdWFsaWZpZWROYW1lQ29tcG9uZW50cywgUU5hbWVDb21wb25lbnRzVHJh
bnNsYXRvcj4oY29tcG9uZW50cyk7CisgICAgbV9pbXBsID0gKmFkZFJlc3VsdC5pdGVyYXRvcjsK
KyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBtX2ltcGwtPnJlZigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggMDM1YzRhMjFh
NzJjOWNkODQwZTBiMjk2MmNlNjk3NmFkODU2YmNiZS4uOWNjZTdkOTViNWUxMDQ0M2MwM2VkYTVi
NzJmMTEyYzU3MDUyZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3Bs
aXRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cApAQCAtMTUwLDcgKzE1MCw3IEBAIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0
cmluZ0RhdGEoKQogCiBQYXNzUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0
U3RyaW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogewotICAgIFNw
YWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAw
KS5maXJzdC0+c2Vjb25kOworICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJl
ZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZGF0
YSkgewogICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZyk7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmNwcAppbmRleCA1NzYxZjUwNmU5MDEwOTE3MzY0NmMxYzkzN2M1MTA3NjNiMWFjMjYzLi4yMjhh
YTg2ZTM1YWE2MzEzODgwOGY5MGVjYzk2OWMyNmRhY2M0MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojp1
cGRhdGVBdHRyaWJ1dGVTdHlsZSgpCiAKICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTo6
aXRlcmF0b3IgY2FjaGVJdGVyYXRvcjsKICAgICBpZiAoY2FjaGVIYXNoKSB7Ci0gICAgICAgIGNh
Y2hlSXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gs
IG51bGxwdHIpLmZpcnN0OworICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0
cmlidXRlQ2FjaGUoKS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKICAgICAgICAg
aWYgKGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQtPmtleSAh
PSBjYWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7CiAgICAgfSBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IGQxMWZlZTEyMTgxNWM3Y2ZjN2M5
OWQwMWNlNTQ1NTg3YmUzY2IxYjYuLmMzYTcxNTNjYWU0NWFkNjAxYTg1Yzg1MDk5ZTNmMTUxODk5
NzI3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0zNTksNyAr
MzU5LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246OnRhZ3MoY29uc3Qg
U3RyaW5nJiBuYW1lKQogCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjphcHBlbmQoTm9kZUNhY2hlTWFw
JiBtYXAsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50KiBlbGVtZW50KQogewotICAg
IE93blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1hcC5hZGQoa2V5LmltcGwoKSwg
bnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2
ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RWxl
bWVudCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjVkY2EzM2NlNzA0ODhkYjVhODNj
ZDlmOTNlZDVjZDFmYThhOWQ2Ny4uZDdmY2I5YWFjMDhlODg1MzY4NmNmZGRiNTFmYTFlMTBkMjk5
NDljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
QEAgLTIzMywxMiArMjMzLDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8
T3duUHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0CiAgICAgRGlmZlRh
YmxlIG9sZFRhYmxlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdMaXN0LnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBuZXdUYWJsZS5hZGQo
bmV3TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgRGlm
ZlRhYmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZl
Y3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsK
ICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZExpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0
W2ldLT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0OworICAgICAgICBEaWZmVGFibGU6
Oml0ZXJhdG9yIGl0ID0gb2xkVGFibGUuYWRkKG9sZExpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNp
emVfdD4oKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5k
ZXggZGNhODFjYWNhYzZiMzg3ZGVlYTZmOTM5N2MwYWNlZTI0MmY2MDY2OS4uMDY0Yjg2MmM5MGI3
NTVlOWY4M2IyYTBmN2NhODFlNDFmMTU0MTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBpbmxpbmUg
dm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkKICAgICBk
b3VibGUgbWF0Y2hUaW1lTXMgPSBXVEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNo
RGF0YS5zdGFydFRpbWU7CiAgICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1z
OwogCi0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMo
bV9jdXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnRv
dGFsVGltZSArPSBtYXRjaFRpbWVNczsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuaGl0
cyArPSAxOworICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9y
dWxlTWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJl
bnRNYXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLnRv
dGFsVGltZSArPSBtYXRjaFRpbWVNczsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
aGl0cyArPSAxOwogICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kLm1hdGNoZXMgKz0gMTsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLm1hdGNoZXMgKz0gMTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGIzNTJiZDhhNzE1ZTFlMTkxMmM4OTBjZWZk
YzhiNDA2NGRlMjdmNDQuLjBlY2ZkMDk3Mzk4MDNhOWNlNTE4NmU0MGUzNzQwZTIwYzM4NzJlZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApA
QCAtODgxLDcgKzg4MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2go
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltCiAgICAgfQogCiAgICAg
KnNlYXJjaElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7Ci0gICAg
U2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgq
c2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5maXJzdDsKKyAgICBTZWFyY2hSZXN1
bHRzOjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJZCwg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOwogCiAgICAgZm9yIChMaXN0SGFzaFNl
dDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJl
c3VsdENvbGxlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBw
ZW5kKCppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggZjJhYWI0YjdmNGY1NzFlY2ZlZGQ5MzI4YTA0NzgxNTkwZDdh
Y2JhOS4uOTI0YmUzODQyOWY3NDA5NjIzYjI2Nzc5MmJhZDA0NTYzM2RjODhmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApA
QCAtMzMzLDcgKzMzMyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAKICAgICBCcmVha3Bv
aW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJC
cmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SWRzLmZpbmQoYnJlYWtwb2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3IgPT0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5l
bmQoKSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFr
cG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3Rv
cjxTdHJpbmc+KCkpLmZpcnN0OworICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVy
YXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFr
cG9pbnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuaXRlcmF0b3I7CiAgICAgZGVidWdTZXJ2ZXJCcmVh
a3BvaW50SWRzSXRlcmF0b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQp
OwogCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9u
ID0gVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBiM2Y2MTcxOTNiZjQ0OWIyZTYz
ZTlmMzJiNWE3MzBkYjYwZDgyNDI2Li5jOTFhZDgyZTY1YmRjMGYxZjlmZTE3NzQ2MzA1YzlhM2Rm
ZWI5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBA
IC0yODIsMjEgKzI4MiwyMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFN0cmlu
Zyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9k
YXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZh
bHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsK
LSAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEu
c2V0KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1l
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAgIEFTU0VS
VCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBp
ZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5h
cHBlbmQobmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZTYyMjljNDRkNTQ2MDBjZjU0
YTZjYjU0Y2EzNmJhMzgyMWVkZTIwNi4uNGU0MjkzOGJiNWQ1N2Q2MTJiZGYzNTBjZjE5MzQwNDAy
NDI3OWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwNjIsMTAgKzEwNjIsMTAgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25l
ZCB0eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHBhaXI8RW50cnlNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUp
OworICAgIEVudHJ5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQo
dXJsLCB0eXBlKTsKICAgICAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kIHw9IHR5cGU7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gdHlwZTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggMTZhN2NjZjJkMzVmNjRlZDRiMGU1NzMyMTBhMzY3NTgzNTc0NGRmMS4uNWQxMDNi
MmZmN2I0Y2JhNTRlMDM3YmE2Yzg3OTYyMzA0ZDA1ZWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogewogICAgIEFT
U0VSVCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCi0gICAgc3RkOjpw
YWlyPENhY2hlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NhY2hlc0luTWVt
b3J5LmFkZChtYW5pZmVzdFVSTCwgMCk7CisgICAgQ2FjaGVHcm91cE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0VVJMLCAwKTsKICAgICAKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAgIC8v
IExvb2sgdXAgdGhlIGdyb3VwIGluIHRoZSBkYXRhYmFzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0
ZUNhY2hlR3JvdXAoY29uc3QgS1VSCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZCh1cmxIb3N0
SGFzaChtYW5pZmVzdFVSTCkpOwogICAgIH0KICAgICAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCA9IGdyb3VwOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gZ3JvdXA7CiAgICAgCiAg
ICAgcmV0dXJuIGdyb3VwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IGE3MWU4NTE1NDZmYzIwYWI4N2NhNzcyMDU1NjE3NGZjNjY2MmVlN2MuLjI5MzY0Y2Q0MTNmYWRm
OTQ5ZGNlNTBkNTYyZDljMzk4ODRhMzdkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTM1MTYsNyArMzUxNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIEVuc3Vy
ZSB0aGlzIHRhcmdldCdzIHRvdWNoIGxpc3QgZXhpc3RzLCBldmVuIGlmIGl0IGVuZHMgdXAgZW1w
dHksIHNvIGl0IGNhbiBhbHdheXMgYmUgcGFzc2VkIHRvIFRvdWNoRXZlbnQ6OkNyZWF0ZSBiZWxv
dy4KICAgICAgICAgVGFyZ2V0VG91Y2hlc01hcDo6aXRlcmF0b3IgdGFyZ2V0VG91Y2hlc0l0ZXJh
dG9yID0gdG91Y2hlc0J5VGFyZ2V0LmZpbmQodG91Y2hUYXJnZXQuZ2V0KCkpOwogICAgICAgICBp
ZiAodGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID09IHRvdWNoZXNCeVRhcmdldC5lbmQoKSkKLSAgICAg
ICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5zZXQodG91Y2hU
YXJnZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLmZpcnN0OworICAgICAgICAgICAgdGFy
Z2V0VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0b3VjaFRhcmdldC5nZXQo
KSwgVG91Y2hMaXN0OjpjcmVhdGUoKSkuaXRlcmF0b3I7CiAKICAgICAgICAgLy8gdG91Y2hlcyBh
bmQgdGFyZ2V0VG91Y2hlcyBzaG91bGQgb25seSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRv
dWNoZXMgc3RpbGwgb24gdGhlIHNjcmVlbiwgc28gaWYgdGhpcyBwb2ludCBpcwogICAgICAgICAv
LyByZWxlYXNlZCBvciBjYW5jZWxsZWQgaXQgd2lsbCBvbmx5IGFwcGVhciBpbiB0aGUgY2hhbmdl
ZFRvdWNoZXMgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA3MzFlMWZjMDc5
YjVmZTlmYjM5MDBmYjU3YmYzNmUxZDk2NmE4ZmIyLi5mOTM5YzliZmQyYTM3NjE5ZjY1NzdiZjdk
MjVmZGYxNzJiM2EwNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC05MCwxNSAr
OTAsMTUgQEAgUGFnZUdyb3VwKiBQYWdlR3JvdXA6OnBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAgICAgIHBhZ2VHcm91cHMgPSBuZXcg
UGFnZUdyb3VwTWFwOwogCi0gICAgcGFpcjxQYWdlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKKyAgICBQYWdlR3JvdXBNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKIAotICAg
IGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNv
bmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBQYWdlR3JvdXAoZ3JvdXBO
YW1lKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
bmV3IFBhZ2VHcm91cChncm91cE5hbWUpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmly
c3QtPnNlY29uZCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFTU0VS
VChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoTGlua0hh
c2ggaGFzaCkKIHsKICAgICBBU1NFUlQoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwogI2lmICFQ
TEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gp
LnNlY29uZCkKKyAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLmlzTmV3RW50
cnkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5n
ZWQodGhpcywgaGFzaCk7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291
cmMKICAgICBPd25QdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2Vy
U2NyaXB0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwg
aW5qZWN0ZWRGcmFtZXMpKTsKICAgICBpZiAoIW1fdXNlclNjcmlwdHMpCiAgICAgICAgIG1fdXNl
clNjcmlwdHMgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdE1hcCk7Ci0gICAgT3duUHRyPFVzZXJT
Y3JpcHRWZWN0b3I+JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwg
bnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNj
cmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNjcmlwdHNJbldv
cmxkID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlwdHNJbldvcmxk
LT5hcHBlbmQodXNlclNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQg
UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCwgY29uc3QgU3RyaW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVT
aGVldCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgd2hpdGVsaXN0
LCBibGFja2xpc3QsIGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICghbV91c2VyU3R5
bGVTaGVldHMpCiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJT
dHlsZVNoZWV0TWFwKTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNo
ZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5maXJz
dC0+c2Vjb25kOworICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRz
SW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgaWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCiAgICAgICAgIHN0eWxlU2hl
ZXRzSW5Xb3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldFZlY3Rvcik7CiAgICAgc3R5
bGVTaGVldHNJbldvcmxkLT5hcHBlbmQodXNlclN0eWxlU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggOTMxZjI2MDNmZDRmMjIxYjRiNWRl
M2FjZGMzN2Q5NzZkMTNkZjIyNy4uYzJhNWFiMTE0MzVlZjZkYjA1NzY4Yzc2Y2EwMzU3YjU2MjU4
MzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTEzMSwxMSAr
MTMxLDExIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgICAgIHJldHVybjsKIAogICAg
IFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBwYWly
PE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01h
cCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3QpOworICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdp
bkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihu
ZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKIAotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCog
bGlzdCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIE9yaWdpbkFjY2Vzc1doaXRl
TGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAgIGxpc3QtPmFw
cGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRv
bWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxs
b3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggZGQwNTQ2MThk
MGY4MGE4MDI2MjY4NWQ4YjBmNGE5OTdiYjEzYjUzOC4uZGE2M2FmYTY0ZGNjNTEyYjQ1N2IxYTBj
NTZhOTkyYTY3ZGE0OWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFk
anVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNw
cApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9k
ZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAg
ICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBD
b250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVz
cG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQgbGF0ZXIuCiAgICAgICAgICAgICAgICAgZm9yICh2
aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2Rl
OyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcGFpcjxIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJl
c3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgICAg
IEhhc2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25k
ZXJzU2V0LmFkZCh2aXNpdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRleCA0YjgyM2IxMmI3OGI2NWRj
Yzc1YmMxMTE3NjI2ODE0MDY2ZjI4NWY5Li40YmM3YzJlNjA3ZWFiM2UwYjQ3MzYwYTYyMjZlMWEy
N2E1MjA4YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQ
cm9wZXJ0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlz
dFBsYW46OndyaXRlSW50ZWdlcihpbnQgaW50ZWdlcikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgbV9pbnRlZ2VyWmVyb09iamVjdFJlZmVyZW5jZSA9IG1fY3VycmVudE9iamVjdFJlZmVy
ZW5jZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1faW50ZWdlcnMuYWRkKGludGVnZXIs
IG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuc2Vjb25kKQorICAgICAgICBpZiAoIW1faW50ZWdl
cnMuYWRkKGludGVnZXIsIG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuaXNOZXdFbnRyeSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgKyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7
CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUlu
dGVnZXIoaW50IGludGVnZXIpCiB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgICsrbV9jdXJyZW50QWdncmVnYXRlU2l6
ZTsKLSAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVu
Y2UpLnNlY29uZCkKKyAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmpl
Y3RSZWZlcmVuY2UpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKICAgICArK21fY3VycmVu
dE9iamVjdFJlZmVyZW5jZTsKICAgICB3cml0ZVN0cmluZ09iamVjdChzdHJpbmcpOwpAQCAtMjI0
LDEyICsyMjQsMTIgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXJB
cnJheShjb25zdCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplX3Qgc2F2
ZWRBZ2dyZWdhdGVTaXplID0gKyttX2N1cnJlbnRBZ2dyZWdhdGVTaXplOwogICAgIEFTU0VSVChz
aXplKTsKLSAgICBwYWlyPEludGVnZXJBcnJheU1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJzLCBzaXplKSwgMCk7
Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEludGVnZXJBcnJheU1hcDo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJz
LCBzaXplKSwgMCk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0
dXJuOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3cml0
ZUludGVnZXIoaW50ZWdlcnNbaV0pOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbV9j
dXJyZW50T2JqZWN0UmVmZXJlbmNlKys7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
PSBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UrKzsKICAgICB3cml0ZUFycmF5T2JqZWN0KHNpemUp
OwogICAgIG1fY3VycmVudEFnZ3JlZ2F0ZVNpemUgPSBzYXZlZEFnZ3JlZ2F0ZVNpemU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclRpbGVyLmNwcAppbmRleCAxYjVhNzMxOWU0MmQ5ZGYxNGJkMjU5NTExMzE5MTYyZTg3
MTVjMTc1Li5kNTE3YWFhN2I0MDI0NDg5MzJkZDQyYmY5ZGFiNDBkMTAyYThkMmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlci5jcHAKQEAgLTQyOCwxOCArNDI4LDE4IEBAIHZvaWQgTGF5ZXJUaWxlcjo6cHJv
Y2Vzc1RleHR1cmVKb2IoY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpv
YnNNCiB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRleCwg
Y29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpvYnNNYXApCiB7CiAgICAg
Ly8gSGFzaE1hcDo6YWRkIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaXRlcmF0b3IgZXZlbiB0aGUg
a2V5IGFscmVhZHkgZXhpc3RzLgotICAgIHBhaXI8VGlsZUpvYnNNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSB0aWxlSm9ic01hcC5hZGQoaW5kZXgsICZqb2IpOworICAgIFRpbGVKb2JzTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9iKTsKIAogICAg
IC8vIFN1Y2Nlc3NmdWxseSBhZGRlZCB0aGUgbmV3IGpvYi4KLSAgICBpZiAocmVzdWx0LnNlY29u
ZCkKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IEluIHRoaXMgY2FzZSB3ZSBsZWF2ZSB0aGUgcHJldmlvdXMgam9iLgotICAgIGlmIChqb2IubV90
eXBlID09IFRleHR1cmVKb2I6OkRpcnR5Q29udGVudHMgJiYgcmVzdWx0LmZpcnN0LT5zZWNvbmQt
Pm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAgaWYgKGpvYi5tX3R5
cGUgPT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC0+bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICByZXN1bHQuZmlyc3Qt
PnNlY29uZCA9ICZqb2I7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSAmam9iOwogfQog
CiB2b2lkIExheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29uc3Qg
VGV4dHVyZUpvYiYgam9iLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IGY2Y2NiOTVkN2U3MTBhM2MxM2Y2MWYyMjAzNjc4MGViZWI2Nzc1YjMuLjFjMDFiNjljODIy
ZjE0MmIzMzY5YjU5NTc3MjFhNzQyMWIzZTI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQ4OCwx
NiArMjQ4OCwxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNB
OjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbAogICAgIC8vIEFkZCB3aXRoIGEg
ZHVtbXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9u
LCBhbmQgYSBib29sZWFuIHRoYXQgdGVsbHMKICAgICAvLyB1cyB3aGV0aGVyIHRoZXJlJ3MgYW4g
aXRlbSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1cHMuCiAgICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1hcDo6aXRlcmF0
b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKLSAgICBp
ZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICBMYXllck1hcDo6QWRkUmVzdWx0IGFkZFJlc3Vs
dCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgIC8vIFZhbHVlIHdhcyBub3QgYWRkZWQsIHNvIGl0IGV4aXN0cyBh
bHJlYWR5LgotICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmdl
dCgpOworICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdl
dCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3Vy
Y2VMYXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1bHRMYXll
ci0+c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9uZUlE
WzBVXSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAgICAgIGFk
ZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CisgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3Vs
dExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCmluZGV4IDAwYzYzMDgwZGZjNzdl
NGI4YzQyYjE2ZTZkYTY4MDk5OTkxNzdkYTguLmI0ZmVhZWU2ODJkOGM0NDU5YTgyYmZhNmRkOWRl
ZjY5NjZhM2FiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6TGF5ZXJDaGFuZ2VzRmx1c2hlcigpCiAKIHZvaWQg
TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbihBYnN0cmFj
dENBQ0ZMYXllclRyZWVIb3N0KiBob3N0KQogewotICAgIGlmICghbV9ob3N0c1dpdGhDaGFuZ2Vz
VG9GbHVzaC5hZGQoaG9zdCkuc2Vjb25kIHx8IG1faG9vaykKKyAgICBpZiAoIW1faG9zdHNXaXRo
Q2hhbmdlc1RvRmx1c2guYWRkKGhvc3QpLmlzTmV3RW50cnkgfHwgbV9ob29rKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBzZXRIb29rKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5j
cHAKaW5kZXggNzExYjg5NmFjNjEyODgzNjJlZDcyZWRmNzJhNDcwOTJmZTcyMjRiZS4uY2M1MmM1
MmViNzA1NzgyZGUxZjk2OGRjODAzYzQ1ZTRmMmFlMjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGls
c0Nocm9taXVtV2luLmNwcApAQCAtNDE0LDggKzQxNCw4IEBAIGJvb2wgZ2V0RGVyaXZlZEZvbnRE
YXRhKGNvbnN0IFVDaGFyKiBmYW1pbHksCiAgICAgICAgIC8vIGEgZm9udCBldmVuIGlmIHRoZXJl
J3Mgbm8gZm9udCBtYXRjaGluZyB0aGUgbmFtZS4gTmVlZCB0bwogICAgICAgICAvLyBjaGVjayBp
dCBhZ2FpbnN0IHdoYXQgd2UgYWN0dWFsbHkgd2FudCAoYXMgaXMgZG9uZSBpbgogICAgICAgICAv
LyBGb250Q2FjaGVXaW4uY3BwKQotICAgICAgICBwYWlyPEZvbnREYXRhQ2FjaGU6Oml0ZXJhdG9y
LCBib29sPiBlbnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnREYXRhKCkpOwot
ICAgICAgICBkZXJpdmVkID0gJmVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIEZvbnREYXRh
Q2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnRE
YXRhKCkpOworICAgICAgICBkZXJpdmVkID0gJmVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
ICAgIGRlcml2ZWQtPmhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KGxvZ2ZvbnQpOwogICAgICAg
ICAvLyBHZXRBc2NlbnQgbWF5IHJldHVybiBrVW5kZWZpbmVkQXNjZW50LCBidXQgd2Ugc3RpbGwg
d2FudCB0bwogICAgICAgICAvLyBjYWNoZSBpdCBzbyB0aGF0IHdlIHdvbid0IGhhdmUgdG8gY2Fs
bCBDcmVhdGVGb250SW5kaXJlY3Qgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDM3MmEwZTA4ZThmM2IyN2M3NDVlYjQ1YjE1MjM1
Mzk0ZTcyMDI2Y2IuLjk4ZWYyNTRhYTk4ZjU4MjI4N2YyNDYxODIyNzcwNjg2NDRmYzRmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTMxMSw3ICszMTEsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFydEFu
aW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdQogICAgICAgICAgICAgLy8g
b2YgYmxvY2tlZCBwcm9wZXJ0aWVzLgogICAgICAgICAgICAgYm9vbCBudWxsSW50ZXJzZWN0aW9u
ID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoVGFyZ2V0UHJvcGVydGllczo6aXRlcmF0b3IgcEl0
ZXIgPSBlbnF1ZXVlZFByb3BlcnRpZXMuYmVnaW4oKTsgcEl0ZXIgIT0gZW5xdWV1ZWRQcm9wZXJ0
aWVzLmVuZCgpOyArK3BJdGVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9ja2VkUHJvcGVy
dGllcy5hZGQoKnBJdGVyKS5zZWNvbmQpCisgICAgICAgICAgICAgICAgaWYgKCFibG9ja2VkUHJv
cGVydGllcy5hZGQoKnBJdGVyKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICBudWxs
SW50ZXJzZWN0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNV
SS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQVRTVUkuY3BwCmluZGV4IDA0MzdiY2RmYzA5Yjk2N2RhN2ZlMTk2ZjI3YmYyZTBl
NzEyMmVkOTkuLmJlOWY3NDEwNGZlNzQzNDQ1NzE1NjQxNjNjZjdhYWQ3MGUwNzJjNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJBVFNVSS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcApAQCAtMjc4LDE1ICsyNzgsMTUgQEAg
c3RhdGljIHZvaWQgZGlzYWJsZUxpZ2F0dXJlcyhjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERh
dGEsIEFUU1VTdHlsZSBhdHN1U3R5bGUKIHN0YXRpYyBBVFNVU3R5bGUgaW5pdGlhbGl6ZUFUU1VT
dHlsZShjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIFR5cGVzZXR0aW5nRmVhdHVyZXMg
dHlwZXNldHRpbmdGZWF0dXJlcykKIHsKICAgICB1bnNpZ25lZCBrZXkgPSB0eXBlc2V0dGluZ0Zl
YXR1cmVzICsgMTsKLSAgICBwYWlyPEhhc2hNYXA8dW5zaWduZWQsIEFUU1VTdHlsZT46Oml0ZXJh
dG9yLCBib29sPiBhZGRSZXN1bHQgPSBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRkKGtleSwg
MCk7Ci0gICAgQVRTVVN0eWxlJiBhdHN1U3R5bGUgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsK
LSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0
eWxlPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5hZGQo
a2V5LCAwKTsKKyAgICBBVFNVU3R5bGUmIGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBh
dHN1U3R5bGU7CiAKICAgICBBVFNVRm9udElEIGZvbnRJRCA9IGZvbnREYXRhLT5wbGF0Zm9ybURh
dGEoKS5jdEZvbnQoKSA/IENURm9udEdldFBsYXRmb3JtRm9udChmb250RGF0YS0+cGxhdGZvcm1E
YXRhKCkuY3RGb250KCksIDApIDogMDsKICAgICBpZiAoIWZvbnRJRCkgewogICAgICAgICBMT0df
RVJST1IoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3IgJXAiLCBmb250RGF0YS0+cGxhdGZv
cm1EYXRhKCkuZm9udCgpKTsKLSAgICAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLnJlbW92
ZShhZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAucmVt
b3ZlKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9u
dERhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggODMyYmI5ZGRmOGRhMTI5OGZkMzkzMjU2
Mjg0ZDA0ZTYzNThmMjQyNi4uMDUxOTM3NDJjNTg1MmRiZTljOWNlZDY0YjlhMDdhYWQyYzFlYTQ3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBs
ZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAtNDIsOSArNDIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBDRkRpY3Rpb25hcnlSZWYgU2ltcGxlRm9udERhdGE6OmdldENGU3Ry
aW5nQXR0cmlidXRlcyhUeXBlc2V0dGluZ0ZlYXR1cmVzIHR5cGVzZXR0aW5nRmVhdHVyZXMsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKIHsKICAgICB1bnNpZ25lZCBrZXkgPSB0
eXBlc2V0dGluZ0ZlYXR1cmVzICsgMTsKLSAgICBwYWlyPEhhc2hNYXA8dW5zaWduZWQsIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+ID46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX0NG
U3RyaW5nQXR0cmlidXRlcy5hZGQoa2V5LCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBh
ZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAg
SGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+KCkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRyaWJ1
dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzRGljdGlvbmFyeS5n
ZXQoKTsKICAgICAKICAgICBib29sIHRyZWF0TGluZUFzVmVydGljYWwgPSBvcmllbnRhdGlvbiA9
PSBWZXJ0aWNhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQppbmRleCA4ZjRhOTE5M2VmNGQ1MzI3MWJlNTRi
MGRjNWVmYmQ5ZGViYWJkYzQ1Li43NGIyNjg2ZDZjZTYwYmJmYTcwYWEwYjIyNTMzNWI5NjAzMjM2
NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2lt
cGxlRm9udERhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCkBAIC00NDAsOSArNDQwLDkgQEAgYm9vbCBTaW1wbGVG
b250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMKICAgICBpZiAoIW1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0
KQogICAgICAgICBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydCA9IGFkb3B0UHRy
KG5ldyBIYXNoTWFwPFN0cmluZywgYm9vbD4pOwogCi0gICAgcGFpcjxXVEY6Okhhc2hNYXA8U3Ry
aW5nLCBib29sPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fY29tYmluaW5nQ2hhcmFj
dGVyU2VxdWVuY2VTdXBwb3J0LT5hZGQoU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCksIGZhbHNl
KTsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBhZGRSZXN1bHQu
Zmlyc3QtPnNlY29uZDsKKyAgICBXVEY6Okhhc2hNYXA8U3RyaW5nLCBib29sPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0LT5hZGQoU3Ry
aW5nKGNoYXJhY3RlcnMsIGxlbmd0aCksIGZhbHNlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAg
ICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRvcHRDRiwgQ1RGb250Q29weUdyYXBoaWNz
Rm9udChwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkpOwogCkBAIC00NjIsNyArNDYyLDcgQEAg
Ym9vbCBTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2Uo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHRydWU7CisgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9y
bURhdGEuY3BwCmluZGV4IDY5MmZkNmQwZDFmMWRiODFhZDI5NzJhM2YzMzQzN2JlZjZmZTYzNWQu
LjE5NzkwYWQ0OWIzMzAzZGQ3YjYyYzdlN2EwYTgyMzY3N2I0Y2ZmNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9y
bURhdGEuY3BwCkBAIC0yODUsMTEgKzI4NSwxMSBAQCBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZvbnRE
YXRhPiBGaXhlZFNpemVGb250RGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaQog
c3RhdGljIFBhc3NSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+IGNyZWF0ZUZpeGVkU2l6ZUZvbnRE
YXRhKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCB1bnNpZ25lZCB3ZWlnaHQsIGJvb2wgaXRh
bGljKQogewogICAgIEZpeGVkU2l6ZUZvbnREYXRhS2V5IGtleShmYW1pbHksIHdlaWdodCwgaXRh
bGljKTsKLSAgICBwYWlyPEZpeGVkU2l6ZUZvbnRDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IGdfZml4ZWRTaXplRm9udENhY2hlLmFkZChrZXksIFJlZlB0cjxGaXhlZFNpemVGb250RGF0
YT4oKSk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kID0gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdlaWdodCwgaXRhbGljKTsK
KyAgICBGaXhlZFNpemVGb250Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnX2ZpeGVkU2l6ZUZv
bnRDYWNoZS5hZGQoa2V5LCBSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+KCkpOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBGaXhl
ZFNpemVGb250RGF0YTo6Y3JlYXRlKGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOwogCi0gICAgcmV0
dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogc3RhdGljIExPTkcgdG9HRElGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdl
aWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5j
cHAKaW5kZXggYTY2OWJjOGVmODUyM2Q0ODY2ZjFlYjgwYTI1MTIzMzAyYWQ0YzQ1Yi4uNzIwZjBm
ZDM2MDFhZDU1YzQxZjA0OGRhMzhlOTBiMTQwYzc4NDJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgc3Rh
dGljIFN0eWxlQ29udGV4dE1hcCYgc3R5bGVDb250ZXh0TWFwKCkKIAogc3RhdGljIEd0a1N0eWxl
Q29udGV4dCogZ2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiB7Ci0gICAgc3RkOjpw
YWlyPFN0eWxlQ29udGV4dE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0eWxlQ29udGV4
dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAg
ICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBTdHlsZUNvbnRleHRN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzdHlsZUNvbnRleHRNYXAoKS5hZGQod2lkZ2V0VHlwZSwg
MCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kLmdldCgpOwogCiAgICAgR3RrV2lkZ2V0UGF0aCogcGF0aCA9IGd0a193
aWRnZXRfcGF0aF9uZXcoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfYXBwZW5kX3R5cGUocGF0aCwg
d2lkZ2V0VHlwZSk7CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIEd0a1N0eWxlQ29udGV4dCog
Z2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRf
c2V0X3BhdGgoY29udGV4dC5nZXQoKSwgcGF0aCk7CiAgICAgZ3RrX3dpZGdldF9wYXRoX2ZyZWUo
cGF0aCk7CiAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGNvbnRleHQ7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSBjb250ZXh0OwogICAgIHJldHVybiBjb250ZXh0LmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KaW5kZXggNDc5
MjE5MTk2ODZmN2FhYzYzNmQ5MTI5NGZmMTRlMTAzNGY0NzNkZS4uODlmZWYwMzA5Yzk0OTk0MmUy
NGRhMWMyNmQzOWE1OGQ1N2QxNDVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RocmVhZENoZWNrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aHJlYWRDaGVjay5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViQ29yZVJlcG9ydFRocmVh
ZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbiwgV2ViQ29yZTo6VGhyZWFkVmlvbGF0aW9u
CiAgICAgICAgIGNhc2UgTm9UaHJlYWRDaGVjazoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIExvZ09uRmlyc3RUaHJlYWRWaW9sYXRpb246Ci0gICAgICAgICAgICBpZiAobG9nZ2Vk
RnVuY3Rpb25zLmFkZChmdW5jdGlvbikuc2Vjb25kKSB7CisgICAgICAgICAgICBpZiAobG9nZ2Vk
RnVuY3Rpb25zLmFkZChmdW5jdGlvbikuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIE5T
TG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9sYXRpb24gLSAlcyBjYWxsZWQgZnJvbSBzZWNvbmRh
cnkgdGhyZWFkIiwgZnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIE5TTG9nKEAiQWRkaXRpb25h
bCB0aHJlYWRpbmcgdmlvbGF0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBsb2dn
ZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCA0NGM1NjgxZmJiZDUzNDhiMjAxNDkzNTFmYTM2
ODMyZDc5NTgyNjI4Li41MDA5MWUxOWQzYWY1NmZmNGE4ZGYxNzViZjg5Nzg3MDA3NjE0MjgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmdldChuYW1lKTsKIH0KIAotcGFpcjxIVFRQSGVhZGVy
TWFwOjppdGVyYXRvciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0hUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCBI
VFRQSGVhZGVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNl
Rm9sZGluZ0hhc2g+OjphZGQobmFtZSwgdmFsdWUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIGJv
b2wgSFRUUEhlYWRlck1hcDo6Y29udGFpbnMoY29uc3QgY2hhciogbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gZmluZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRvcj4obmFt
ZSkgIT0gZW5kKCk7CiB9CiAKLXBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhU
VFBIZWFkZXJNYXA6OmFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
SFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0
cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjphZGQ8Y29uc3QgY2hhciosIENhc2VGb2xk
aW5nQ1N0cmluZ1RyYW5zbGF0b3I+KG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggMDIwNzFlMzYxMGMxZDRi
NGZjZGY0ZDZjOTU5YjQ5Zjg3ZjNhNWYxNS4uMTJiZGUwNjg5N2U3Y2UzZjNlYzkwMTJlMWMzN2Zk
ZmZlOGQ4OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
SGVhZGVyTWFwLmgKQEAgLTUxLDEyICs1MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIAogICAgICAgICBTdHJpbmcgZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7
CiAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAvLyBB
bHRlcm5hdGUgYWNjZXNzb3JzIHRoYXQgYXJlIGZhc3RlciB0aGFuIGNvbnZlcnRpbmcgdGhlIGNo
YXIqIHRvIEF0b21pY1N0cmluZyBmaXJzdC4KICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBj
aGFyKikgY29uc3Q7CiAgICAgICAgIFN0cmluZyBnZXQoY29uc3QgY2hhciopIGNvbnN0OwotICAg
ICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgY2hhciogbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgICAgIAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4
IDQzYTY0ZTk3MDcyNDA0MDQyMjdkY2IwZDVlMjU2ZDM3NGI4NzM1OWEuLjM1MDk3OTI5Mjc4Yzc2
MDY0YzRiMGRlYjlhZmUzOWZmMTliZTRjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMzcxLDkgKzM3
MSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0UHJpb3JpdHkoUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgcHJpb3JpdHkpCiB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFk
ZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIAog
ewogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxkcy5hZGQobmFtZSwgdmFs
dWUpOyAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vj
b25kICs9ICIsIiArIHZhbHVlOworICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBtX2h0dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCIgKyB2YWx1
ZTsKIAogICAgIGlmICh1cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIG1f
cGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcAppbmRleCAzZTU5OGJhYjZiOWE4NTBhNWE2Y2M5MjhjMDA2OWMwODkz
YTgxMDllLi42ZTgxNGFlYjVlZjlkNjNlMDYyMGZhYjgyYjZiMmQ3MzY2NmYzNWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzIzLDcgKzMyMyw3IEBA
IGJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBycFBh
Y2thZ2UpCiAKICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IHBycFBhY2thZ2U7
CiAKLSAgICBpZiAoIW1fcGx1Z2lucy5hZGQocGFja2FnZSkuc2Vjb25kKQorICAgIGlmICghbV9w
bHVnaW5zLmFkZChwYWNrYWdlKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBtX3BsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZSk7CkBAIC01
NzQsNyArNTc0LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0
YUNhY2hlKCkKIAogICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdp
blBhY2thZ2U6OmNyZWF0ZVBhY2thZ2VGcm9tQ2FjaGUocGF0aCwgbGFzdE1vZGlmaWVkLCBuYW1l
LCBkZXNjLCBtaW1lRGVzYyk7CiAKLSAgICAgICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1Z2lu
cy5hZGQocGFja2FnZSkuc2Vjb25kKSB7CisgICAgICAgIGlmIChwYWNrYWdlICYmIGNhY2hlZFBs
dWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIGNhY2hlZFBsdWdp
blBhdGhzV2l0aFRpbWVzLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UtPmxhc3RNb2RpZmll
ZCgpKTsKICAgICAgICAgICAgIGNhY2hlZFBsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBhdGgo
KSwgcGFja2FnZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2lu
L1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCAyNzEyMWM2NjRlM2M2YjZiYzZiNWQ2ZWRkYmJh
YmJjZjcyYjc2OWVkLi5mZmI0MjFhNGM0MjhhY2U5MjRkZjMzM2UwYTAwODUxOTYzNjEwMWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3Bw
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJ
bkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9ICppdCArICJcXCIg
KyBmaWxlbmFtZTsKLSAgICAgICAgICAgIGlmICghdW5pcXVlRmlsZW5hbWVzLmFkZChmdWxsUGF0
aCkuc2Vjb25kKQorICAgICAgICAgICAgaWYgKCF1bmlxdWVGaWxlbmFtZXMuYWRkKGZ1bGxQYXRo
KS5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBw
YXRocy5hZGQoZnVsbFBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggNjU3MDc0NzdkNzA1MjBmNjg2NDYwODdjMTJhNzIxZmYyNGVmNmQzYi4uODM2MmFh
ZTNlNjc1MmExMTI3YTBjOWMwNWQ1Njk3YzY3MGZiMWVmMyAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zODMzLDcgKzM4MzMsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjphZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJCb3gqIGRlc2NlbmRhbnQpCiAg
ICAgICAgIGRlc2NlbmRhbnRTZXQgPSBuZXcgSGFzaFNldDxSZW5kZXJCb3gqPjsKICAgICAgICAg
Z1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+c2V0KHRoaXMsIGRlc2NlbmRhbnRTZXQpOwog
ICAgIH0KLSAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQpLnNl
Y29uZDsKKyAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQpLmlz
TmV3RW50cnk7CiAgICAgaWYgKCFhZGRlZCkgewogICAgICAgICBBU1NFUlQoZ1BlcmNlbnRIZWln
aHRDb250YWluZXJNYXAtPmdldChkZXNjZW5kYW50KSk7CiAgICAgICAgIEFTU0VSVChnUGVyY2Vu
dEhlaWdodENvbnRhaW5lck1hcC0+Z2V0KGRlc2NlbmRhbnQpLT5jb250YWlucyh0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
CmluZGV4IGU1ZDU5YmI4ZTBhMjFkMmUzNjAwNzYwNzk4NWNhMTdjYjM2ZGEyMjYuLjlkZDIxODEy
NTAyNWYyOTNhODZiNTY1OTdjOGI3NmYyMTg0Y2Q1ZjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC02NjIsMTQgKzY2Miwx
NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihSb290SW5s
aW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBydQogICAgIHJ1bi0+bV9ib3gtPnNldExvZ2ljYWxX
aWR0aChyZW5kZXJlci0+d2lkdGgocnVuLT5tX3N0YXJ0LCBydW4tPm1fc3RvcCAtIHJ1bi0+bV9z
dGFydCwgeFBvcywgbGluZUluZm8uaXNGaXJzdExpbmUoKSwgJmZhbGxiYWNrRm9udHMsICZnbHlw
aE92ZXJmbG93KSArIGh5cGhlbldpZHRoKTsKICAgICBpZiAoIWZhbGxiYWNrRm9udHMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPm1fYm94LT5pc1RleHQoKSk7Ci0gICAgICAgIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRh
TWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29u
c3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5maXJzdDsKKyAgICAgICAg
R2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERh
dGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxj
b25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAg
ICAgICBBU1NFUlQoaXQtPnNlY29uZC5maXJzdC5pc0VtcHR5KCkpOwogICAgICAgICBjb3B5VG9W
ZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnNlY29uZC5maXJzdCk7CiAgICAgICAgIHJ1bi0+bV9i
b3gtPnBhcmVudCgpLT5jbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxp
bmUoKTsKICAgICB9CiAgICAgaWYgKChnbHlwaE92ZXJmbG93LnRvcCB8fCBnbHlwaE92ZXJmbG93
LmJvdHRvbSB8fCBnbHlwaE92ZXJmbG93LmxlZnQgfHwgZ2x5cGhPdmVyZmxvdy5yaWdodCkpIHsK
ICAgICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRk
KHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1w
bGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLmZpcnN0OworICAgICAgICBHbHlwaE92
ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5h
ZGQodG9JbmxpbmVUZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNp
bXBsZUZvbnREYXRhKj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0
LT5zZWNvbmQuc2Vjb25kID0gZ2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5tX2JveC0+Y2xl
YXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDhjMWI2YmYxOWI3M2E1
OGIwNDcyODhlOTU1YTU5ZDY1NWYyNjNhOWIuLmRhYjVkN2IyMWU3YWU5ZjBkZDljMDBhNTg3NDAy
YWRhMWFjN2ZjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yMTcsOCArMjE3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OmNoZWNrSW52YWxpZFJlZ2lvbnMoKQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6YWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG90
aGVyRmxvd1RocmVhZCkKIHsKLSAgICBzdGQ6OnBhaXI8UmVuZGVyTmFtZWRGbG93VGhyZWFkQ291
bnRlZFNldDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1Nl
dC5hZGQob3RoZXJGbG93VGhyZWFkKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIFJl
bmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xheW91
dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7CisgICAgaWYgKHJlc3VsdC5p
c05ld0VudHJ5KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2Ugc2VlIHRo
aXMgZGVwZW5kZW5jeS4gTWFrZSBzdXJlIHdlIHJlY2FsY3VsYXRlIGFsbCB0aGUgZGVwZW5kZW5j
aWVzLgogICAgICAgICB2aWV3KCktPnNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0
eSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CmluZGV4IGNjZTI1YTc0N2YyNThiNDMyODVhYjgyOTk4NTM0YTI3NjMwNGFkZjEuLmRlOThmZjg5
MTg4NDU0NDE4NmE2ODc2NDU1ZDkzNzMyZmVkMDE1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgUmVuZGVyQm94UmVnaW9u
SW5mbyogUmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRlckJv
eCogYm94LAogICAgIGlmICghbV9pc1ZhbGlkIHx8ICFtX2Zsb3dUaHJlYWQpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9y
ZW5kZXJCb3hSZWdpb25JbmZvLmFkZChib3gsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAg
T3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25J
bmZvLmFkZChib3gsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKGJveEluZm8p
CiAgICAgICAgICpib3hJbmZvID0gUmVuZGVyQm94UmVnaW9uSW5mbyhsb2dpY2FsTGVmdEluc2V0
LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KTsKICAgICBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCA5MDdmZTE2NzdiMTcwNDgyYzZmNGFjNTdlZDk3
MWQ1NzIxOTFhZTQxLi5mOGY0OTNkYjg1YTBkZGI3YTY5YzFmMTZjYjE3NWY3MGFkOWRjYjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRl
clN0eWxlKgogICAgIGlmIChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdyYWRp
ZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3QtPnNlY29u
ZDsKKyAgICBPd25QdHI8R3JhZGllbnREYXRhPiYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1h
cC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JhZGll
bnREYXRhKQogICAgICAgICBncmFkaWVudERhdGEgPSBhZG9wdFB0cihuZXcgR3JhZGllbnREYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGJlYzBmMzM3NGY0NjQzNjJhOWE1ODNlYWYxOTgz
NTAyODFiOGQwMmMuLjRkYzUwMWI4MDZiM2Q4ZGYyNTQ3NDU0M2JjZmNmZjM4NzYwZDYyNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxl
KgogICAgIGlmIChtX2F0dHJpYnV0ZXMucGF0dGVyblVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPFBhdHRlcm5EYXRhPiYg
cGF0dGVybkRhdGEgPSBtX3BhdHRlcm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3QtPnNl
Y29uZDsKKyAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0dGVybk1h
cC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcGF0dGVy
bkRhdGEpCiAgICAgICAgIHBhdHRlcm5EYXRhID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EYXRhKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKaW5kZXggNDhkYjY5ODAzMjIyYTRj
YjM5YWQxYTg1MDBmYTZjNjM4NDgyMDY4OS4uOGU0MmQyZjE3NmRkM2IxMTEyYTAxYTUxZDhkYjYy
ZjRiMzhiYmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCkBAIC0xMzEs
OSArMTMxLDkgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpzZXRJdGVtKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHUKICAgICB9CiAgICAgbV9jdXJyZW50
TGVuZ3RoID0gbmV3TGVuZ3RoOwogCi0gICAgcGFpcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6
aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKLSAgICBp
ZiAoIWFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0g
dmFsdWU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX21hcC5hZGQoa2V5LCB2YWx1ZSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSB2YWx1ZTsKIAogICAgIGludmFs
aWRhdGVJdGVyYXRvcigpOwogCkBAIC0xNzEsOCArMTcxLDggQEAgdm9pZCBTdG9yYWdlTWFwOjpp
bXBvcnRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IC8vIEJlIHN1cmUgdG8gY29weSB0aGUga2V5cy92YWx1ZXMgYXMgaXRlbXMgaW1wb3J0ZWQgb24g
YSBiYWNrZ3JvdW5kIHRocmVhZCBhcmUgZGVzdGluZWQKICAgICAvLyB0byBjcm9zcyBhIHRocmVh
ZCBib3VuZGFyeQotICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRl
ZENvcHkoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOyAgLy8g
VHJ1ZSBpZiB0aGUga2V5IGRpZG4ndCBleGlzdCBwcmV2aW91c2x5LgorICAgIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleS5pc29sYXRlZENv
cHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7IC8vIFRydWUgaWYgdGhlIGtleSBkaWRuJ3QgZXhpc3QgcHJldmlv
dXNseS4KIAogICAgIEFTU0VSVChtX2N1cnJlbnRMZW5ndGggKyBrZXkubGVuZ3RoKCkgPj0gbV9j
dXJyZW50TGVuZ3RoKTsKICAgICBtX2N1cnJlbnRMZW5ndGggKz0ga2V5Lmxlbmd0aCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA4MTBiOTY2
NWMxZmE4MjBlMDE5NTRmNzFmMTdhZWM3N2U1NWRkMjVmLi45OTk4MDg5NDVhNTg4ZDcwOWFmYWM0
NzU2M2IxZjQ2MWMwY2NhMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU1ZHU3R5bGVk
CiAgICAgLy8gbWFwIGlmIHRoZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiBTbyB3ZSBhZGQgd2l0
aCBhIHZhbHVlIG9mIDAsIGFuZCBpdCBlaXRoZXIgZmluZHMgdGhlCiAgICAgLy8gZXhpc3Rpbmcg
ZWxlbWVudCBvciBhZGRzIGEgbmV3IG9uZSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFRoZSAiLmZp
cnN0LT5zZWNvbmQiIGlkaW9tIGdldHMKICAgICAvLyB1cyB0byB0aGUgaXRlcmF0b3IgZnJvbSBh
ZGQncyByZXN1bHQsIGFuZCB0aGVuIHRvIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGhhc2ggdGFibGUu
Ci0gICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChp
ZCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBTVkdQZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3Bl
bmRpbmdSZXNvdXJjZXMuYWRkKGlkLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc2V0
KQogICAgICAgICBzZXQgPSBuZXcgU1ZHUGVuZGluZ0VsZW1lbnRzOwogICAgIHNldC0+YWRkKGVs
ZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNzEyMjAwY2U2
OTNjOWQ1ZGFiMTgwYTA3MTVmZWI3YTFmOWY2MzUzMy4uYTcxYzQ0NTU1Mzg3ZjVmZjg2ODQ0MzUy
OTg3NDI0NDQyYzY4ODUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC04OTksOSArODk5LDkgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcihj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmEKIAogdm9pZCBYTUxIdHRw
UmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtX3JlcXVlc3RIZWFkZXJzLmFkZChuYW1lLCB2YWx1ZSk7Ci0g
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAi
LCAiICsgdmFsdWU7CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVx
dWVzdEhlYWRlcnMuYWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CiB9CiAK
IFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCAx
NTRiNjdlOTJkMzJjN2QxNzZiY2I4MTA5MGU4ZGY0MTk4YjRiMDBhLi43MDdjYzdmY2UyYzczNjE4
ZTgyOTg2ZGQ2Yjk2YzVmZWY3Mzk4ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAog
ICAgICAgICAvLyBJZiB0aGVyZSBhcmUgc2V2ZXJhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGlkLCBp
ZCgpIHNob3VsZCByZXR1cm4gdGhlIGZpcnN0IG9uZS4KICAgICAgICAgLy8gSW4gV2ViS2l0LCBn
ZXRFbGVtZW50QnlJZCBiZWhhdmVzIHNvLCB0b28sIGFsdGhvdWdoIGl0cyBiZWhhdmlvciBpbiB0
aGlzIGNhc2UgaXMgZm9ybWFsbHkgdW5kZWZpbmVkLgogICAgICAgICBOb2RlKiBub2RlID0gY29u
dGV4dFNjb3BlLT5nZXRFbGVtZW50QnlJZChTdHJpbmcoaWRMaXN0LmNoYXJhY3RlcnMoKSArIHN0
YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpOwotICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRT
ZXQuYWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFkZChu
b2RlKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKICAgICAg
ICAgCiAgICAgICAgIHN0YXJ0UG9zID0gZW5kUG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcApp
bmRleCBkOWQxZmQ0N2Q2NjRmMGM5YmRmMTQ2YWMyMWRkOTNhZGZhYjRhMjA0Li5iYTFkZWQzOWUx
ODRhMDNlNWUxODM1NTNkODBlZDZjYWRmZWNmYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgTG9jYXRpb25QYXRoOjpldmFsdWF0ZShOb2RlU2V0
JiBub2RlcykgY29uc3QKIAogICAgICAgICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsg
bm9kZUluZGV4IDwgbWF0Y2hlcy5zaXplKCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1hdGNoZXNbbm9kZUluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAo
IW5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUpLnNl
Y29uZCkKKyAgICAgICAgICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMg
fHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAg
IG5ld05vZGVzLmFwcGVuZChub2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXggNThjZDg3OThlYjM2M2FlYmI2YjQ4YzMz
OTU2NzAwZmYxMDc1YTU3Ny4uMzY4MDBhMTE3NDE2ZDA3MjZhMmFiMjIyODk5N2EwYmZiMWM4OTA1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBAIC0yNDAsNyArMjQwLDcg
QEAgVmFsdWUgVW5pb246OmV2YWx1YXRlKCkgY29uc3QKICAgICAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJoc05vZGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBy
aHNOb2Rlc1tpXTsKLSAgICAgICAgaWYgKG5vZGVzLmFkZChub2RlKS5zZWNvbmQpCisgICAgICAg
IGlmIChub2Rlcy5hZGQobm9kZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdFNldC5h
cHBlbmQobm9kZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SFRUUExvYWRJbmZvLmNwcAppbmRleCBlM2RjZThjNWFjNGQ2ZjZjZTQ3Njk4ZTJmM2E3MTI1MjYx
MjJjNzU5Li4zYzBjZjE1ZDVjOWM3M2FjNjU3OGM5YmE3NzZjZTliZTkzNGFlZTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKQEAgLTEwMyw5
ICsxMDMsOSBAQCB2b2lkIFdlYkhUVFBMb2FkSW5mbzo6c2V0RW5jb2RlZERhdGFMZW5ndGgobG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoKQogCiBzdGF0aWMgdm9pZCBhZGRIZWFkZXIoSFRUUEhl
YWRlck1hcCogbWFwLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFs
dWUpCiB7Ci0gICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bWFwLT5hZGQobmFtZSwgdmFsdWUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwgIiArIFN0cmluZyh2YWx1ZSk7CisgICAgSFRUUEhl
YWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC0+YWRkKG5hbWUsIHZhbHVlKTsKKyAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCAr
PSAiLCAiICsgU3RyaW5nKHZhbHVlKTsKIH0KIAogdm9pZCBXZWJIVFRQTG9hZEluZm86OmFkZFJl
cXVlc3RIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4
IGVjMjEyZTUxNzdjYzU4NjM4Y2UwMTcyYzc1ZjEwOGQzZjM3NTJkM2IuLjA3ZDVhNDVmODhjZTlj
OGEzNDM3NDkzM2MyYjQzNzY5ZTRhMDA3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgV2ViVVJM
UmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYKICAgICAvLyBGSVhNRTogQWRkIGFuIGFkZEhUVFBIZWFkZXJGaWVsZCBtZXRo
b2QgdG8gUmVzb3VyY2VSZXNwb25zZS4KICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBtYXAgPSBt
X3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+aHR0cEhlYWRlckZpZWxkcygpOwogICAgIFN0
cmluZyB2YWx1ZVN0cih2YWx1ZSk7Ci0gICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0KKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0KICAg
ICAgICAgY29uc3RfY2FzdDxIVFRQSGVhZGVyTWFwKj4oJm1hcCktPmFkZChuYW1lLCB2YWx1ZVN0
cik7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCArPSAiLCAiICsgdmFsdWVTdHI7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gIiwgIiArIHZhbHVlU3RyOwogfQogCiB2b2lk
IFdlYlVSTFJlc3BvbnNlOjpjbGVhckhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcAppbmRleCBjNDQ1MGY3NDllZTFmYTk2NDVh
NjEzMGVjOGJjM2JlZjk1NDRhMTRhLi45YzljYzAyNmI0N2I0ZmVhOTYwYzYzOTg0NmUwZWJhNTFj
NDY1M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKQEAgLTUxLDEwICs1MSw5IEBA
IHN0YXRpYyBDT01QdHI8SUNsYXNzRmFjdG9yeT4gY2xhc3NGYWN0b3J5KGNvbnN0IENMU0lEJiBj
bHNpZCkKICAgICB0eXBlZGVmIEhhc2hNYXA8Q0xTSUQsIENPTVB0cjxJQ2xhc3NGYWN0b3J5Piwg
Q0xTSURIYXNoLCBDTFNJREhhc2hUcmFpdHM+IEZhY3RvcnlNYXA7CiAgICAgc3RhdGljIEZhY3Rv
cnlNYXAmIGZhY3RvcmllcyA9ICpuZXcgRmFjdG9yeU1hcDsKIAotICAgIHBhaXI8RmFjdG9yeU1h
cDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGZhY3Rvcmllcy5hZGQoY2xzaWQsIDApOwotICAg
IENPTVB0cjxJQ2xhc3NGYWN0b3J5PiYgZmFjdG9yeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOwot
ICAgIGJvb2wgYWRkZWQgPSByZXN1bHQuc2Vjb25kOwotICAgIGlmIChhZGRlZCAmJiBGQUlMRUQo
RGxsR2V0Q2xhc3NPYmplY3QoY2xzaWQsIF9fdXVpZG9mKGZhY3RvcnkpLCByZWludGVycHJldF9j
YXN0PHZvaWQqKj4oJmZhY3RvcnkpKSkpCisgICAgRmFjdG9yeU1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IGZhY3Rvcmllcy5hZGQoY2xzaWQsIDApOworICAgIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiYg
ZmFjdG9yeSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSAmJiBGQUlMRUQoRGxsR2V0Q2xhc3NPYmplY3QoY2xzaWQsIF9fdXVpZG9mKGZhY3Rvcnkp
LCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmZhY3RvcnkpKSkpCiAgICAgICAgIGZhY3Rvcnkg
PSAwOwogCiAgICAgcmV0dXJuIGZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYTJmZmEwZjI1MGJlODkwNjEyNDA3MWNk
NDgyOWQ3ODhiN2I4YWYzOC4uMDcwZjQ1ODMwNzlmN2I0ZWViZmNmNGEyYTg4ODQ3ODZkOGM1NTQw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2Rl
cnMuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5h
bWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAoIXRlbXBIYXNoTWFwLmFkZChrZXksIHZhbHVlKS5z
ZWNvbmQpIHsKKyAgICAgICAgICAgIGlmICghdGVtcEhhc2hNYXAuYWRkKGtleSwgdmFsdWUpLmlz
TmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCBtYXAgYWxyZWFkeSBoYXMg
dGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCiAgICAgICAgICAgICAgICAgZGVjb2Rlci0+bWFya0lu
dmFsaWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzYzJmMTRjZWQwM2U4ZjA5
YmYwNTM5Njg4OWIxODRlZjhiODVjNTllLi5mN2MzNzIzZjdlZjdkZDIyOTFlYTU5MTUwNjAwOTNk
YzFjNDE4YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5jcHAKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPENvbm5l
Y3Rpb246OlN5bmNNZXNzYWdlU3RhdGU+IENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6Omdl
dE9yQ3JlYXRlKFJ1bkxvb3AqIHJ1bkxvb3ApCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN5
bmNNZXNzYWdlU3RhdGVNYXBNdXRleCgpKTsKLSAgICBwYWlyPFN5bmNNZXNzYWdlU3RhdGVNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBzeW5jTWVzc2FnZVN0YXRlTWFwKCkuYWRkKHJ1bkxv
b3AsIDApOworICAgIFN5bmNNZXNzYWdlU3RhdGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW5j
TWVzc2FnZVN0YXRlTWFwKCkuYWRkKHJ1bkxvb3AsIDApOwogCi0gICAgaWYgKCFyZXN1bHQuc2Vj
b25kKSB7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7
CisgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAKICAgICBSZWZQdHI8U3luY01lc3Nh
Z2VTdGF0ZT4gc3luY01lc3NhZ2VTdGF0ZSA9IGFkb3B0UmVmKG5ldyBTeW5jTWVzc2FnZVN0YXRl
KHJ1bkxvb3ApKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHN5bmNNZXNzYWdlU3RhdGUu
Z2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBzeW5jTWVzc2FnZVN0YXRlLmdl
dCgpOwogCiAgICAgcmV0dXJuIHN5bmNNZXNzYWdlU3RhdGUucmVsZWFzZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAKaW5kZXggMmY5MDVlYzZhMTI0
ODcwZDg5N2JhMzcwMDRiZThjYWQyZmIyYzE3NC4uYWM2OWI3NmEzYjI0YWY3ZWMxNmFlOTc3Mzc5
YzUxYTZlM2RlM2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVE
aWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25h
cnkuY3BwCkBAIC0zOCwxNCArMzgsMTQgQEAgTXV0YWJsZURpY3Rpb25hcnk6On5NdXRhYmxlRGlj
dGlvbmFyeSgpCiAKIGJvb2wgTXV0YWJsZURpY3Rpb25hcnk6OmFkZChjb25zdCBTdHJpbmcmIGtl
eSwgQVBJT2JqZWN0KiBpdGVtKQogewotICAgIHN0ZDo6cGFpcjxNYXBUeXBlOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgaXRlbSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5z
ZWNvbmQ7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0
ZW0pOworICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKIH0KIAogYm9vbCBNdXRhYmxlRGlj
dGlvbmFyeTo6c2V0KGNvbnN0IFN0cmluZyYga2V5LCBBUElPYmplY3QqIGl0ZW0pCiB7Ci0gICAg
c3RkOjpwYWlyPE1hcFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5zZXQoa2V5
LCBpdGVtKTsKLSAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKKyAgICBNYXBUeXBlOjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9tYXAuc2V0KGtleSwgaXRlbSk7CisgICAgcmV0dXJuIHJlc3VsdC5pc05l
d0VudHJ5OwogfQogCiB2b2lkIE11dGFibGVEaWN0aW9uYXJ5OjpyZW1vdmUoY29uc3QgU3RyaW5n
JiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCmluZGV4IDk2
NzJmMjhkZjM3YWFiOTExZmRjMjgxYmUyYzY4MjAwMDVjMmFiZjEuLmFjZTcyZmQyZTMzZTNiYzEx
N2ZjMmZhNDU1ZjE1ZDg3NzdmYzAwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Vc2VyTWVzc2FnZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVz
c2FnZUNvZGVycy5oCkBAIC0yODUsOCArMjg1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VDb2RlcikpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxJbW11dGFibGVEaWN0
aW9uYXJ5OjpNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLnNldChrZXksIGVs
ZW1lbnQucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCisg
ICAgICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1hcC5zZXQoa2V5LCBlbGVtZW50LnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDljZTU0NDA3ZTU2OWQ1MDMwZjgxZGFiYTFlZmRjYjk5YmZiMGEwZjku
LmU4ZGZkODE2OGM3YTI3MTI2NGFjZjVjNzFkZDkwMmMwYTc0NTViODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yNzEsMTggKzI3MSwxNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1J
RCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdpbmFs
VVJMKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwogCi0gICAgc3RkOjpwYWlyPFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW1NYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2JhY2tGb3J3
YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsK
LSAgICAgICAgLy8gTmV3IGl0ZW0uCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCB1cmwsIHRpdGxlLCBiYWNr
Rm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpLCBpdGVtSUQpOworICAg
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2JhY2tGb3J3
YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCB1cmwsIHRpdGxlLCBiYWNrRm9yd2FyZERhdGEuZGF0
YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpLCBpdGVtSUQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIGl0ZW0uCi0gICAgcmVzdWx0LmZpcnN0LT5z
ZWNvbmQtPnNldE9yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKTsKLSAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZC0+c2V0VVJMKHVybCk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldFRpdGxlKHRp
dGxlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0QmFja0ZvcndhcmREYXRhKGJhY2tG
b3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCkpOworICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQtPnNldFVSTCh1cmwpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLT5zZXRUaXRsZSh0aXRsZSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldEJh
Y2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6
ZSgpKTsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNlYmJiMzBjMWFmM2I0ZDljMWQy
MzliMDhmYmY0ZTVhZTc2ZWY0NmUuLjdkNzMwNWVkYmMzMGNkZTA5MWZhZmNmM2VjOWMzMjBlNThj
NmUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cApAQCAtNjcsMTIgKzY3LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKE5vZGUqCiAgICAgaWYgKCFu
b2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVDYWNoZTo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKG5vZGUsIDApOwot
ICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlPihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFuZGxl
Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChub2RlLCAwKTsK
KyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OmNyZWF0ZShub2RlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9
IG5vZGVIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBub2RlSGFu
ZGxlLmdldCgpOwogICAgIHJldHVybiBub2RlSGFuZGxlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCBlOTRlZGZk
MzRiOGI4OWQzNmU5ZDNlN2ZkYjBjNDdhMDA1MjVlMTE5Li4xYjc0ZjAxMjQwMDhkYjNjMDc4Mjhl
YTZmNmQyYzA1YWMwNTljMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
UmFuCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBzdGQ6OnBhaXI8
RE9NSGFuZGxlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgp
LmFkZChyYW5nZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4g
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1bHQuZmlyc3QtPnNlY29u
ZCk7CisgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNo
ZSgpLmFkZChyYW5nZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAg
cmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJh
bmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJhbmdlSGFuZGxlLmdldCgpOworICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0KCk7CiAgICAgcmV0dXJuIHJhbmdlSGFu
ZGxlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDI3ZTRjNzJlYTFmNzRkNWUxMTU1NDU0YjhhMzVjOWNhZTM2OWE4ZWMuLjI2ZTU0MDc0NGJk
NTI3NGM5YjZkYWNlZWE1YmY5NGZhM2FlMDQ5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAg
bV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uSUQpOwogICAg
IG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwog
ICAgIAotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmlj
YXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgVmVjdG9yPHVpbnQ2NF90PigpKS5maXJzdDsKKyAgICBOb3RpZmljYXRpb25Db250ZXh0TWFw
OjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuaXRlcmF0b3I7
CiAgICAgaXQtPnNlY29uZC5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogICAgIAogICAgIG1fcHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90
aWZpY2F0aW9uLT5pY29uVVJMKCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCks
IG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGMxYmEwNTBjZjZkYTFkN2FhMTYx
NzYxNDM3ZjRjNDhkNWFkZTIxZDEuLjJkZmNkZTA4M2I5YzE0YjFjNDExMjYzYjY2MjMwMzg5ZmUx
YmYzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTE4
LDE2ICs1MTgsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKIHsKICAgICAvLyBJdCBpcyBu
ZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEg
d2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRz
IGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUg
bm9ybWFsIHdheS4gCi0gICAgc3RkOjpwYWlyPEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQ
YWdlPiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIDAp
OwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0
LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBhZ2U6OmNyZWF0
ZShwYWdlSUQsIHBhcmFtZXRlcnMpOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQ
YWdlPiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIDApOworICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJQYWdlOjpj
cmVhdGUocGFnZUlELCBwYXJhbWV0ZXJzKTsKIAogICAgICAgICAvLyBCYWxhbmNlZCBieSBhbiBl
bmFibGVUZXJtaW5hdGlvbiBpbiByZW1vdmVXZWJQYWdlLgogICAgICAgICBkaXNhYmxlVGVybWlu
YXRpb24oKTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCkBAIC03MzksMTMgKzczOSwxMyBAQCBXZWJQ
YWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKHVpbnQ2NF90IHBhZ2VHcm91
cElEKQogCiBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKGNvbnN0
IFdlYlBhZ2VHcm91cERhdGEmIHBhZ2VHcm91cERhdGEpCiB7Ci0gICAgc3RkOjpwYWlyPEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1fcGFnZUdyb3VwTWFwLmFkZChwYWdlR3JvdXBEYXRhLnBhZ2VHcm91cElELCAw
KTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBXZWJQYWdlR3JvdXBQ
cm94eTo6Y3JlYXRlKHBhZ2VHcm91cERhdGEpOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZUdyb3VwTWFw
LmFkZChwYWdlR3JvdXBEYXRhLnBhZ2VHcm91cElELCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3
RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShw
YWdlR3JvdXBEYXRhKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQu
Z2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiBz
dGF0aWMgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAwNTlkZWNhODk2ZGQ4NzVkMGFiNWIzMGQ3YWJlNzA4MTgyMzA0NjRmLi5iOWRmNjM1
ZDdiZTdmYzE4OGVmYjcyMTY0ZTRkMzcyMWI3N2MxNjU4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMjkg
IENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNj
cmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorCiAyMDEyLTAzLTI5ICBWaW5lZXQgQ2hh
dWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBSZW1vdmUgY3VzdG9tIGJp
bmRpbmdzIGZvcm0gSW50ZXJuYWxzLmlkbCBvZiBhdHRyaWJ1dGUgdHlwZSBBcnJheS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CmluZGV4IDgwOTQxYjhlMDY3MmRhZjQwNTdlMWZlMDdmYTAzNThlMGZhY2JhMWMuLjFiNmE0MTU3
YzQ4ZTY2NjVkNTM5Y2FjOGFkNzg4MDkzMjNjNzIwZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTMwMiw3ICsx
MzAyLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgSlNPYmoKICAgICAgICAgaWYgKEZBSUxFRChXZWJL
aXRDcmVhdGVJbnN0YW5jZShfX3V1aWRvZihXZWJTY3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdv
cmxkKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3b3JsZCkpKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9IGVsc2UgewotICAgICAgICBDT01QdHI8SVdlYlNjcmlwdFdvcmxkPiYgd29y
bGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICAg
ICAgQ09NUHRyPElXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdv
cmxkSUQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIGlmICghd29ybGRTbG90ICYmIEZB
SUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShfX3V1aWRvZihXZWJTY3JpcHRXb3JsZCksIDAsIF9f
dXVpZG9mKHdvcmxkU2xvdCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmd29ybGRTbG90KSkp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3b3JsZCA9IHdvcmxkU2xvdDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDU4MzQ4Njg0OWQ1YzdlZjU1NGM2NzdhNmMyM2Y0
ZmM5OGI4ZDFiOS4uY2VjNDM0NGRkMmNmMzQ1NmY3YjUyZDc3Yjk3ZDMwYzdlZDI1MDBlYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChKU0NvbnRleHRS
ZWYgY29udGV4dCwgdQogICAgIGlmICghd29ybGRJRCkKICAgICAgICAgd29ybGQuYWRvcHQoV0tC
dW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpOwogICAgIGVsc2UgewotICAgICAgICBXS1Jl
dGFpblB0cjxXS0J1bmRsZVNjcmlwdFdvcmxkUmVmPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5h
ZGQod29ybGRJRCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5k
bGVTY3JpcHRXb3JsZFJlZj4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDAp
Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIGlmICghd29ybGRTbG90KQogICAgICAgICAgICAg
d29ybGRTbG90LmFkb3B0KFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpKTsKICAgICAg
ICAgd29ybGQgPSB3b3JsZFNsb3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134558</attachid>
            <date>2012-03-29 06:14:49 -0700</date>
            <delta_ts>2012-03-29 08:21:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120329101448.patch</filename>
            <type>text/plain</type>
            <size>181250</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDM2ZDUxMzVjOGExNjA2ZTRmNmM1NzEyNWJiM2Q4YWVkMmU1NjA2Li4wZjk1MDJiZTkzNmQ1MTJm
ZGZlZmFmZGFlNjNlNzg3M2VmNzM5NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yOCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBvYmplY3QgZXF1
YWxpdHkgc3BlY3VsYXRpb25zIHNob3VsZCBiZSBzaW1wbGlmaWVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ4MGFiODRkMDc5
NTZmMjUyZjkxYThkNDAwYmU4NDk5NGQ5YzkyYTUuLjFhZTgyNTljMjc5M2QwZTZiMzgzODFlYTU1
YjNkMDQ0NzgwM2QyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDMtMjkgIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBIYXNoVGFibGU8Pjo6YWRkKCkgYW5kIGRlcml2YXRlIGZ1bmN0aW9ucyByZXR1cm4gYW4gQWRk
UmVzdWx0IHN0cnVjdCBpbnN0ZWFkCisgICAgICAgIG9mIGEgcGFpci4gVGhpcyBzdHJ1Y3QgY29u
dGFpbnMgY29udGFpbnMgJ2l0ZXJhdG9yJyBhbmQgJ2lzTmV3RW50cnknIG1lbWJlcnMsIHRoYXQg
YXJlCisgICAgICAgIG1vcmUgcmVhZGFibGUgYXQgY2FsbHNpdGVzIHRoYW4gcHJldmlvdXMgJ2Zp
cnN0JyBhbmQgJ3NlY29uZCcuCisKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAg
ICAgICAgKEhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAq
IHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChIYXNoTWFwKToKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoSGFz
aFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURik6CisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ6Okhhc2hU
YWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChIYXNoVGFibGVBZGRSZXN1bHQpOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6YWRk
KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZFBhc3NpbmdIYXNo
Q29kZSk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChMaXN0SGFzaFNl
dCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUp
OgorICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6SWRlbnRpZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWRE
YXRhLmg6CisgICAgICAgIChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAg
ICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1MWRiYTI2ZTAxYzUyZjJm
ZmVmYTgwMzVhZjc5MzlmMzI0MjljZjMuLjc4N2YzMTZmYWE0MjcxNTM0MWIxOGMwMDVkYTg3NWZl
M2RhZjM5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTQgQEAKKzIwMTItMDMtMjkgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2
ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRl
c3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
T01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hU
YWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0
LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVu
dGlmaWVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAg
ICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFj
Y3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRR
dWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6
CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxl
Y3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNl
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91
cCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRM
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNh
Y2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdl
c0ZsdXNoZXI6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldERlcml2ZWRGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplQVRTVVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHlsZUNvbnRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaDoKKyAgICAgICAgKEhUVFBIZWFkZXJNYXApOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAqIHBs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJh
c2U6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3Rl
bnRNZXRhZGF0YUNhY2hlKToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJ
bkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6
c2V0UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VNYXA6OnNldEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6aW1wb3J0SXRlbSk6CisgICAgICAgICogc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVy
SW50ZXJuYWwpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6RnVuSWQ6OmV2YWx1YXRlKToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlvblBhdGg6OmV2YWx1YXRlKToK
KyAgICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBh
dGg6OlVuaW9uOjpldmFsdWF0ZSk6CisKKzIwMTItMDMtMjkgIENoYXJsZXMgV2VpICA8Y2hhcmxl
cy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBZGQgSW50
ZXJuYWwgdGVzdCBzdXBwb3J0IGZvciBibGFja2JlcnJ5IHBvcnRpbmcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjU5NworCisgICAgICAgIFJldmll
d2VkIGJ5IFJvYiBCdWlzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCB0aGUgYnVpbGQg
c3lzdGVtIGVuaGFuY2VtZW50IGZvciBCbGFja0JlcnJ5IHBvcnRpbmcuCisKKyAgICAgICAgKiBV
c2VKU0MuY21ha2U6CisKIDIwMTItMDMtMjggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3dpdGNoIGhlYXAgcHJvZmlsZXIg
ZnJvbnQtZW5kIHRvIHNlcGFyYXRlIHN0b3JhZ2Ugb2Ygbm9kZXMgYW5kIGVkZ2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGZhYTA1YWVhOTJiMzQ0NGQzYmFlYWQyMTAwMzU2YzRlZDAy
YWIyNjcuLjc3MTZjMmMzNDQ5Yjg2N2QyZDAwZmVlZWU2MzY2YTRlZjRjMzcwZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMjkgIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4KKworICAgICAgICAq
IHNyYy9XZWJIVFRQTG9hZEluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjphZGRIZWFkZXIpOgor
ICAgICAgICAqIHNyYy9XZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFJlc3BvbnNlOjphZGRIVFRQSGVhZGVyRmllbGQpOgorCiAyMDEyLTAzLTI5ICBUb21teSBXaWRl
bmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTog
QWRkaW5nIGJldHRlciBjb21tZW50cyBmb3IgdGhlIFdlYlJUQyBtZXRob2RzIGluIFdlYktpdFBs
YXRmb3JtU3VwcG9ydC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggN2QwZGU4Y2NjZjQ0MmIwMTA2ZWFi
MTI1YzgwMDM1YzM4YzU1MjExZC4uYmZiMGYxNGQ0ODRiZjEwNjM5M2RiNjFhMTY4Zjg4N2MxNmFm
OWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTI5ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRp
dmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAg
ICAgKiBXZWJLaXRDT01BUEkuY3BwOgorICAgICAgICAoY2xhc3NGYWN0b3J5KToKKwogMjAxMi0w
My0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92
ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UgY2FsbGJhY2ssIHNpbmNlIG5vCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggNzI2ODIxZDA5NzQ1ZmI4MzkwN2JiMTU0MGI2ZDljOTY5MTQ2ODMwMS4uY2E1OWUzOTBk
MmFjZmQ1YjExNmJlZGNlMjM1Yjg2ZmI4M2FhNzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9s
aXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJl
dHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVh
ZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBTaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
dXRhYmxlRGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6TXV0YWJsZURpY3Rpb25h
cnk6OnNldCk6CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZXNzYWdlRGVjb2Rlcjo6YmFzZURlY29kZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OndlYlBhZ2VHcm91cCk6CisKIDIwMTItMDMtMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSBjcmFzaCBhbmQgYW4gYXNzZXJ0aW9uIHdoZW4g
cmVjb3ZlcmluZyBmcm9tIGEgd2ViIHByb2Nlc3MgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggNjEzZTUzOGJjNzVkYjM2OWY3ZGZmN2I2
Nzk4OTJjYjcwMmIzMjEzNi4uOWFjYTBjN2UxOGNhNWNjY2NlZTczNTllYTM5MWMyODM0YjBhMWFj
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAg
LTg5LDcgKzg5LDcgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIDogV2Vha0hhbmRsZU93
bmVyIHsKICAgICAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0NlbGwqIG93bmVyLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiBlbXB0eTsKLSAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuYWRkKHByb3BlcnR5TmFtZS5pbXBs
KCksIGVtcHR5KS5maXJzdC0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOwor
ICAgICAgICAgICAgbV9wcm9wZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkp
Lml0ZXJhdG9yLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NS
ZWYuY3BwCmluZGV4IDVjMjQ5YWJhZjY1ZWJiYTg5MmY5ZjUzMDMzNGM1ZGJjMGQ5NWI5OWQuLjEz
NTM0ZDA3OGM2YjliODc4MWYwOTk2YTZiYjk4OGIzN2Y0ZGJkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIE9wYXF1ZUpTQ2xh
c3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6SlNHbG9iYWxEYXRh
JiwgT3BhcXVlSlNDCiAKIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6
Y29udGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewotICAgIE93blB0cjxPcGFxdWVKU0NsYXNz
Q29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFxdWVKU0Ns
YXNzRGF0YS5hZGQodGhpcywgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8T3Bh
cXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCku
b3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFjb250ZXh0RGF0YSkKICAgICAgICAgY29udGV4dERhdGEgPSBhZG9wdFB0cihuZXcg
T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcykpOwogICAg
IHJldHVybiAqY29udGV4dERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDRhNmY0NjUzZWFiODky
ZmM2ZGEwZGI5M2NiNDljYjE1NzFhNmFkZmIuLjBmMDg1Nzk1MzM2NDA0YzVhMDRmYTFlN2JjZGMx
NmEwMjdlMWYxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDAsMTAgKzIwMCwxMCBAQCBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wg
aXNDb25zdGFudCwgUmVnaXN0ZQogewogICAgIGludCBpbmRleCA9IG1fY2FsbGVlUmVnaXN0ZXJz
LnNpemUoKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBpc0NvbnN0YW50
ID8gUmVhZE9ubHkgOiAwKTsKLSAgICBwYWlyPFN5bWJvbFRhYmxlOjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAg
U3ltYm9sVGFibGU6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5p
bXBsKCksIG5ld0VudHJ5KTsKIAotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICBy
MCA9ICZyZWdpc3RlckZvcihyZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRleCgpKTsKKyAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHIwID0gJnJlZ2lzdGVyRm9yKHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLmdldEluZGV4KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0yMTUsOSArMjE1LDkgQEAgaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRHbG9i
YWxWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXNDb25zdGFudCkKIHsKICAgICBp
bnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLnNpemUoKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5l
d0VudHJ5KGluZGV4LCBpc0NvbnN0YW50ID8gUmVhZE9ubHkgOiAwKTsKLSAgICBwYWlyPFN5bWJv
bFRhYmxlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQu
aW1wbCgpLCBuZXdFbnRyeSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICBpbmRl
eCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldEluZGV4KCk7CisgICAgU3ltYm9sVGFibGU6OkFk
ZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5
KTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBpbmRleCA9IHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kLmdldEluZGV4KCk7CiAgICAgcmV0dXJuIGluZGV4OwogfQogCkBAIC05
NjgsMjQgKzk2OCwyNCBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZAogdW5zaWduZWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAg
IFN0cmluZ0ltcGwqIHJlcCA9IGlkZW50LmltcGwoKTsKLSAgICBwYWlyPElkZW50aWZpZXJNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2lkZW50aWZpZXJNYXAuYWRkKHJlcCwgbV9jb2Rl
QmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIC8v
IG5ldyBlbnRyeQorICAgIElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2lkZW50
aWZpZXJNYXAuYWRkKHJlcCwgbV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkSWRlbnRp
ZmllcihJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgcmVwKSk7CiAKLSAgICByZXR1cm4gcmVzdWx0
LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRWYWx1ZShKU1ZhbHVl
IHYpCiB7CiAgICAgaW50IGluZGV4ID0gbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CiAKLSAgICBwYWly
PEpTVmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpT
VmFsdWU6OmVuY29kZSh2KSwgbV9uZXh0Q29uc3RhbnRPZmZzZXQpOwotICAgIGlmIChyZXN1bHQu
c2Vjb25kKSB7CisgICAgSlNWYWx1ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fanNWYWx1ZU1h
cC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHYpLCBtX25leHRDb25zdGFudE9mZnNldCk7CisgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIG1fY29uc3RhbnRQb29sUmVnaXN0ZXJzLmFw
cGVuZChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsK
ICAgICAgICAgKyttX25leHRDb25zdGFudE9mZnNldDsKICAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZENvbnN0YW50KEpTVmFsdWUodikpOwogICAgIH0gZWxzZQotICAgICAgICBpbmRleCA9IHJlc3Vs
dC5maXJzdC0+c2Vjb25kOworICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
OwogCiAgICAgcmV0dXJuICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiB9CkBAIC0x
MTMyLDcgKzExMzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQo
UmVnaXN0ZXJJRCogZHN0LCBkb3VibGUgbnVtYmVyKQogICAgIC8vIHdvcmsgY29ycmVjdGx5IHdp
dGggTmFOIGFzIGEga2V5LgogICAgIGlmIChpc25hbihudW1iZXIpIHx8IG51bWJlciA9PSBIYXNo
VHJhaXRzPGRvdWJsZT46OmVtcHR5VmFsdWUoKSB8fCBIYXNoVHJhaXRzPGRvdWJsZT46OmlzRGVs
ZXRlZFZhbHVlKG51bWJlcikpCiAgICAgICAgIHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVy
KG51bWJlcikpOwotICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVt
YmVyLCBKU1ZhbHVlKCkpLmZpcnN0LT5zZWNvbmQ7CisgICAgSlNWYWx1ZSYgdmFsdWVJbk1hcCA9
IG1fbnVtYmVyTWFwLmFkZChudW1iZXIsIEpTVmFsdWUoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAg
ICBpZiAoIXZhbHVlSW5NYXApCiAgICAgICAgIHZhbHVlSW5NYXAgPSBqc051bWJlcihudW1iZXIp
OwogICAgIHJldHVybiBlbWl0TG9hZChkc3QsIHZhbHVlSW5NYXApOwpAQCAtMTE0MCw3ICsxMTQw
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQq
IGRzdCwgZG91YmxlIG51bWJlcikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsK
LSAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIu
aW1wbCgpLCAwKS5maXJzdC0+c2Vjb25kOworICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBt
X3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFzdHJpbmdJbk1hcCkKICAgICAgICAgc3RyaW5nSW5NYXAgPSBqc093bmVkU3RyaW5n
KGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci51c3RyaW5nKCkpOwogICAgIHJldHVybiBlbWl0TG9h
ZChkc3QsIEpTVmFsdWUoc3RyaW5nSW5NYXApKTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHVuc2ln
bmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgp
CiAKIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0g
bV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5maXJzdC0+c2Vjb25kOworICAg
IEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBs
KCksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFzdHJpbmdJbk1hcCkgewogICAgICAg
ICBzdHJpbmdJbk1hcCA9IGpzU3RyaW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci51c3RyaW5n
KCkpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKHN0cmluZ0luTWFwKTsKQEAgLTE3MTgsMTAg
KzE3MTgsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlv
bihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uQm9keU5vZGUKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRMYXp5TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlv
bkJvZHlOb2RlKiBmdW5jdGlvbikKIHsKLSAgICBzdGQ6OnBhaXI8RnVuY3Rpb25PZmZzZXRNYXA6
Oml0ZXJhdG9yLCBib29sPiBwdHIgPSBtX2Z1bmN0aW9uT2Zmc2V0cy5hZGQoZnVuY3Rpb24sIDAp
OwotICAgIGlmIChwdHIuc2Vjb25kKQotICAgICAgICBwdHIuZmlyc3QtPnNlY29uZCA9IG1fY29k
ZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rp
b24pKTsKLSAgICByZXR1cm4gZW1pdE5ld0Z1bmN0aW9uSW50ZXJuYWwoZHN0LCBwdHIuZmlyc3Qt
PnNlY29uZCwgdHJ1ZSk7CisgICAgRnVuY3Rpb25PZmZzZXRNYXA6OkFkZFJlc3VsdCBwdHIgPSBt
X2Z1bmN0aW9uT2Zmc2V0cy5hZGQoZnVuY3Rpb24sIDApOworICAgIGlmIChwdHIuaXNOZXdFbnRy
eSkKKyAgICAgICAgcHRyLml0ZXJhdG9yLT5zZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rp
b25EZWNsKG1ha2VGdW5jdGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0aW9uKSk7CisgICAgcmV0dXJu
IGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgcHRyLml0ZXJhdG9yLT5zZWNvbmQsIHRydWUp
OwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uSW50
ZXJuYWwoUmVnaXN0ZXJJRCogZHN0LCB1bnNpZ25lZCBpbmRleCwgYm9vbCBkb051bGxDaGVjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCBiYjk1Y2FmYjY4MjYzYTliZjUxMGFhNGU0MjI3ZjVlYTQzYTNlZTk4Li5jZDlk
ZTIyZjA1OTg3OThlMjdiMjc3MWI5Yjg3ZTQ1MTM2YTk3OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNTYsOSAr
MjU2LDkgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyKG5vZGUsIHN0YXRpY19jYXN0
PFByb3BlcnR5Tm9kZSo+KDApKTsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxHZXR0ZXJTZXR0ZXJN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtYXAuYWRkKG5vZGUtPm5hbWUoKS5pbXBsKCks
IHBhaXIpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kLnNlY29uZCA9IG5vZGU7CisgICAgICAgICAgICBHZXR0ZXJT
ZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAuYWRkKG5vZGUtPm5hbWUoKS5pbXBsKCks
IHBhaXIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5zZWNvbmQgPSBub2RlOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSByZW1haW5pbmcgcHJvcGVydGllcyBpbiB0aGUg
bGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4
IDQ0MWM5YWVkMzMxYzhiM2ViOGQ3NjIzNDBjYmE5MzUzNGRjNTM0ZWEuLmVkZThhOWJhMjQ4Yjlh
ODk0Yjc5MTc0ZWQ1ZDMyMGY4OGY1Y2NiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBpbmxpbmUgdm9pZCBSZWNvbXBp
bGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKIAogICAgIC8vIENoZWNrIGlmIHRoZSBmdW5j
dGlvbiBpcyBhbHJlYWR5IGluIHRoZSBzZXQgLSBpZiBzbywKICAgICAvLyB3ZSd2ZSBhbHJlYWR5
IHJldHJhbnNsYXRlZCBpdCwgbm90aGluZyB0byBkbyBoZXJlLgotICAgIGlmICghbV9mdW5jdGlv
bkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxlKS5zZWNvbmQpCisgICAgaWYgKCFtX2Z1bmN0aW9u
RXhlY3V0YWJsZXMuYWRkKGV4ZWN1dGFibGUpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3Qt
PkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggOTY5MTAxZTg3YzUzOGM5NWQxN2Qx
NjUxYWUyYWM1ZDZkMzZiMjU5ZC4uYWMyYzNkYjIxY2Y3NGExYTRkNjRiNDY4OWZmMTZmZWZlN2Jk
MWViMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQ+JiBBc3NlbWJseUhlbHBlcnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayoKICAgICBB
U1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwog
ICAgIEFTU0VSVChjb2RlQmxvY2stPmppdENvZGVNYXAoKSk7CiAgICAgCi0gICAgc3RkOjpwYWly
PEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gPjo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ss
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+KCkpOworICAgIEhhc2hNYXA8Q29kZUJs
b2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gPjo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ssIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+KCkpOwogICAgIAotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICBj
b2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgp
LT5kZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIAotICAgIHJldHVybiByZXN1
bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9
CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDkyODUwNTYzYWVkNTExNTM5N2NhYzhh
NDIyNzU4YjA3NGI4NmE0YTMuLmYwZGE2Y2MwMWI3MGU4NzliYjkwOTc4YzhiYTg3MDZmYWQ4Njhk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCkBAIC01NTEsMTEgKzU1MSwxMSBAQCBwcml2YXRlOgogICAgIAogICAgIE5vZGVJbmRleCBj
ZWxsQ29uc3RhbnQoSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgcGFpcjxIYXNoTWFwPEpT
Q2VsbCosIE5vZGVJbmRleD46Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9jZWxsQ29uc3RhbnRO
b2Rlcy5hZGQoY2VsbCwgTm9Ob2RlKTsKLSAgICAgICAgaWYgKGl0ZXIuc2Vjb25kKQotICAgICAg
ICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJ
bmZvKGNlbGwpKTsKKyAgICAgICAgSGFzaE1hcDxKU0NlbGwqLCBOb2RlSW5kZXg+OjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9jZWxsQ29uc3RhbnROb2Rlcy5hZGQoY2VsbCwgTm9Ob2RlKTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQgPSBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oY2VsbCkpOwogICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIGl0ZXIuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KICAgICAKICAgICBDb2RlT3JpZ2luIGN1cnJl
bnRDb2RlT3JpZ2luKCkKQEAgLTI1OTUsMTAgKzI1OTUsMTAgQEAgQnl0ZUNvZGVQYXJzZXI6Oklu
bGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5dGVDb2Rl
UGFyc2UKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVy
T2ZJZGVudGlmaWVycygpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHJlcCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihpKS5pbXBsKCk7Ci0gICAgICAgICAgICBwYWlyPElkZW50aWZp
ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlm
aWVyTWFwLmFkZChyZXAsIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVu
dGlmaWVycygpKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQorICAgICAgICAgICAg
SWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2lkZW50
aWZpZXJNYXAuYWRkKHJlcCwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZklk
ZW50aWZpZXJzKCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+YWRkSWRlbnRpZmllcihJZGVu
dGlmaWVyKGJ5dGVDb2RlUGFyc2VyLT5tX2dsb2JhbERhdGEsIHJlcCkpOwotICAgICAgICAgICAg
bV9pZGVudGlmaWVyUmVtYXBbaV0gPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAg
IG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAg
IH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mQ29u
c3RhbnRSZWdpc3RlcnMoKTsgKytpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29k
ZUJsb2NrLT5nZXRDb25zdGFudChpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwpAQCAt
MjYxMSwxMiArMjYxMSwxMiBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5s
aW5lU3RhY2tFbnRyeShCeXRlQ29kZVBhcnNlciogYnl0ZUNvZGVQYXJzZQogICAgICAgICAgICAg
ICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2VtcHR5SlNWYWx1ZUlu
ZGV4OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYnl0ZUNvZGVQYXJz
ZXItPm1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgYnl0ZUNvZGVQYXJz
ZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCkgKyBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAg
ICAgICAgICAgSlNWYWx1ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5t
X2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5t
X2NvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAg
ICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5hZGRDb25zdGFudCh2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29uc3RhbnRzLmFwcGVuZChD
b25zdGFudFJlY29yZCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fY29uc3RhbnRS
ZW1hcFtpXSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgbV9jb25zdGFudFJl
bWFwW2ldID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIG1fY2FsbHNpdGVCbG9ja0hlYWROZWVkc0xpbmtpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA5YWUzMmM0YjBkZTJiNjllMzMxYTU4YWRm
YzQwZTQxNTFjYTJmYTkwLi44MmY2ZGY3ZDEyYThlZjI3NDQwNTUxNmRlNjZjNTUzNjM4YjRmZGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzU1OCwyNCArMzU1
OCwyNCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgdG9fb2JqZWN0KQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQogewotICAgIHN0ZDo6cGFpcjxD
VElTdHViTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2N0aVN0dWJNYXAuYWRkKGdlbmVy
YXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCkpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0g
ICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQgPSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7Ci0gICAg
cmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgQ1RJU3R1Yk1hcDo6QWRkUmVzdWx0IGVu
dHJ5ID0gbV9jdGlTdHViTWFwLmFkZChnZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigp
KTsKKyAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNl
Y29uZCA9IGdlbmVyYXRvcihnbG9iYWxEYXRhKTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3It
PnNlY29uZDsKIH0KIAogTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25T
dHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQogewotICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25T
dHViTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5h
ZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOwotICAgIGlmICghcmVz
dWx0LmZpcnN0LT5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gUGFzc1dl
YWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0
ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5j
dGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNpYykp
OwotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBIb3N0RnVuY3Rp
b25TdHViTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5hZGQo
ZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIGlmICghcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gUGFz
c1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgSklUOjpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBm
dW5jdGlvbiksIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNvbnN0cnVjdG9yLCBOb0ludHJpbnNp
YykpOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIH0KIAogTmF0
aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIFRodW5rR2VuZXJhdG9yIGdlbmVy
YXRvciwgSW50cmluc2ljIGludHJpbnNpYykKIHsKLSAgICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9u
U3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5h
ZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOwotICAgIGlmICghKmVu
dHJ5LmZpcnN0LT5zZWNvbmQpIHsKKyAgICBIb3N0RnVuY3Rpb25TdHViTWFwOjpBZGRSZXN1bHQg
ZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwgUGFzc1dlYWs8TmF0
aXZlRXhlY3V0YWJsZT4oKSk7CisgICAgaWYgKCEqZW50cnkuaXRlcmF0b3ItPnNlY29uZCkgewog
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZTsKICAgICAgICAgaWYgKGdlbmVyYXRv
cikgewogICAgICAgICAgICAgaWYgKGdsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMzU4NCw5
ICszNTg0LDkgQEAgTmF0aXZlRXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHVi
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0aXZlRnUKICAgICAgICAgICAgICAgICBjb2Rl
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
Y29kZSA9IEpJVDo6Y29tcGlsZUNUSU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pOwot
ICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4o
Kmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwg
ZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGlu
dHJpbnNpYykpOworICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gUGFzc1dlYWs8TmF0
aXZlRXhlY3V0YWJsZT4oKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSgqZ2xv
YmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IsIGludHJpbnNpYykpOwogICAgIH0KLSAgICByZXR1cm4gZW50cnkuZmlyc3Qt
PnNlY29uZC5nZXQoKTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsK
IH0KIAogdm9pZCBKSVRUaHVua3M6OmNsZWFySG9zdEZ1bmN0aW9uU3R1YnMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGY1ODg0N2ZkMjQ2NzhmMmYyNTJjMzUx
YjVkOGQzYmU5ZTUzNWFiNzIuLjY5NDM5NzdhODVhNmZmN2M5MTFhNzJhNGM4MzliNjljMWQ3NDM4
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzMjMsMTIg
KzEzMjMsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICAgICAgcHJvcGVydHkgPSBw
YXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0
eSk7CiAgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKSB7Ci0gICAgICAgICAg
ICBzdGQ6OnBhaXI8T2JqZWN0VmFsaWRhdGlvbk1hcDo6aXRlcmF0b3IsIGJvb2w+IHByb3BlcnR5
RW50cnlJdGVyID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkp
LmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7Ci0gICAgICAgICAgICBpZiAoIXBy
b3BlcnR5RW50cnlJdGVyLnNlY29uZCkgewotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocHJv
cGVydHlFbnRyeUl0ZXIuZmlyc3QtPnNlY29uZCA9PSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsK
KyAgICAgICAgICAgIE9iamVjdFZhbGlkYXRpb25NYXA6OkFkZFJlc3VsdCBwcm9wZXJ0eUVudHJ5
ID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwoKSwg
Y29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5RW50
cnkuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgIGZhaWxJZlRydWUocHJvcGVydHlFbnRy
eS5pdGVyYXRvci0+c2Vjb25kID09IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwogICAgICAgICAg
ICAgICAgIGZhaWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSA9PSBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KTsKLSAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlw
ZShwcm9wZXJ0eSkgJiBwcm9wZXJ0eUVudHJ5SXRlci5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAg
ICAgICAgICBwcm9wZXJ0eUVudHJ5SXRlci5maXJzdC0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlw
ZShwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUo
cHJvcGVydHkpICYgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgICAg
ICAgICBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgfD0gY29udGV4dC5nZXRUeXBlKHBy
b3BlcnR5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0YWlsID0gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHks
IHRhaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzUxM2QxZjEx
ZmQ0ODk1ODI4YWY4Y2FlYmU4MGFkYTE1YjVmNTdmOS4uNjhhNjkzYTNlOWVkZTJhOTc4ZTdmODE1
NjQxM2RiMzhlY2FjYTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0yMjMsNyArMjIzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGRlY2xhcmVQYXJhbWV0
ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAgewogICAgICAgICBib29sIGlzQXJndW1l
bnRzID0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50Owot
ICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlID0gbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQo
aWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpLnNlY29uZCAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3VtZW50czsKKyAgICAgICAgYm9vbCBpc1Zh
bGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCku
aW1wbCgpKS5pc05ld0VudHJ5ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAh
PSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOwogICAgICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0g
bV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBpc1ZhbGlkU3RyaWN0TW9kZTsKICAgICAgICAgaWYgKGlz
QXJndW1lbnRzKQogICAgICAgICAgICAgc2V0RmxhZ3MoU2hhZG93c0FyZ3VtZW50c0ZsYWcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCBmYmM1
Nzg3Y2U2NTcyYThkODRkN2MwNGJmODIzMTdmNTg0ODA2YjYzLi4xODJiY2M0NjIwMjJiNGVjMmNi
YWM2ODU1YzUwMjlmNjRjNzExZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmNwcApAQCAtMTEwLDExICsxMTAsMTEgQEAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBJZGVudGlmaWVyOjphZGQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBjaGFy
KiBjKQogICAgIGlmIChpdGVyICE9IGxpdGVyYWxJZGVudGlmaWVyVGFibGUuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAKLSAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gaWRlbnRpZmllclRhYmxlLmFkZDxjb25zdCBM
Q2hhciosIElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcj4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGMpKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IGlkZW50aWZpZXJUYWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmlu
Z1RyYW5zbGF0b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CiAKICAgICAv
LyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9w
dCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlz
IHNvLgotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRlZFN0cmluZyA9IGFkZFJlc3VsdC5zZWNv
bmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAg
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZGVkU3RyaW5nID0gYWRkUmVzdWx0LmlzTmV3RW50cnkgPyBh
ZG9wdFJlZigqYWRkUmVzdWx0Lml0ZXJhdG9yKSA6ICphZGRSZXN1bHQuaXRlcmF0b3I7CiAKICAg
ICBsaXRlcmFsSWRlbnRpZmllclRhYmxlLmFkZChjLCBhZGRlZFN0cmluZy5nZXQoKSk7CiAKQEAg
LTEzOCwxMSArMTM4LDExIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
OChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVDaGFyKiBzCiAgICAgaWYgKCFsZW5n
dGgpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogICAgIENoYXJCdWZmZXI8
VUNoYXI+IGJ1ZiA9IHtzLCBsZW5ndGh9OyAKLSAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+
OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxl
LT5hZGQ8Q2hhckJ1ZmZlcjxVQ2hhcj4sIElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0
b3IgPihidWYpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0
ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hhckJ1ZmZlcjxVQ2hhcj4sIElk
ZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3IgPihidWYpOwogICAgIAogICAgIC8vIElm
IHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0
LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28u
Ci0gICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0
KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8g
YWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CkBAIC0yMTAsNyArMjEwLDcgQEAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIFN0cmluZ0kKICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICB9CiAKLSAg
ICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkKHIpLmZpcnN0OworICAg
IHJldHVybiAqZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQocikuaXRlcmF0b3I7CiB9
CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkU2xvd0Nhc2UoRXhlY1N0
YXRlKiBleGVjLCBTdHJpbmdJbXBsKiByKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oCmluZGV4IGI5ZTVhMTg1NDQ5MjM5Nzg3NDYwMjkyYTIyZWFiMzUyYmY3Yjhl
MjIuLjE0OTYwODc2YjZmNThkODY3YjlhNWUzODI3NWNlZDA2YzJhY2U2ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTE3OCwxMSArMTc4LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmdJbXBsOjplbXB0eSgpOwogICAgICAgICBDaGFyQnVmZmVyPFQ+IGJ1ZiA9IHtzLCBs
ZW5ndGh9OyAKLSAgICAgICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJv
b2w+IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZm
ZXI8VD4sIElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CisgICAgICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ2xvYmFsRGF0YS0+
aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hhckJ1ZmZlcjxUPiwgSWRlbnRpZmllckNoYXJCdWZmZXJU
cmFuc2xhdG9yPFQ+ID4oYnVmKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBzdHJpbmcg
aXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgICAgICAv
LyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgICAg
ICByZXR1cm4gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDog
KmFkZFJlc3VsdC5maXJzdDsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8g
YWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogICAg
IH0KIAogICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29u
c3QgSWRlbnRpZmllciYgYikKQEAgLTI0NiwxMCArMjQ2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFN0cmluZ0ltcGw+ID4sIElkZW50aWZpZXJNYXBJbmRl
eEhhc2hUcmFpdHM+IElkZW50aWZpZXJNYXA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3Is
IGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRkKFUgdmFsdWUpCisgICAgSGFzaFNldDxTdHJpbmdJ
bXBsKj46OkFkZFJlc3VsdCBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV90YWJsZS5hZGQ8VSwgVj4odmFsdWUpOwotICAgICAgICAoKnJlc3VsdC5maXJzdCkt
PnNldElzSWRlbnRpZmllcih0cnVlKTsKKyAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZDxVLCBWPih2YWx1ZSk7CisgICAgICAgICgqcmVz
dWx0Lml0ZXJhdG9yKS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCAyYzYyMGI0YWU1ODlkMWVjOWU2ZjQ3NjkyZTQ0NmNmYTg1NjNkNDAxLi4wZmZhMDc2Y2Vh
ZjA5NjA0ZmFiYWJjMGY2OTU3YzE1NmYxZjFhZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMTk1LDEwICsxOTUsMTAgQEAgdm9pZCBKU0FycmF5Ojpm
aW5hbGl6ZShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+ZGVhbGxvY2F0ZVNwYXJzZU1h
cCgpOwogfQogCi1pbmxpbmUgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9y
LCBib29sPiBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXksIHVuc2lnbmVk
IGkpCitpbmxpbmUgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycmF5VmFs
dWVNYXA6OmFkZChKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSkKIHsKICAgICBTcGFyc2VBcnJh
eUVudHJ5IGVudHJ5OwotICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9t
YXAuYWRkKGksIGVudHJ5KTsKKyAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGksIGVu
dHJ5KTsKICAgICBzaXplX3QgY2FwYWNpdHkgPSBtX21hcC5jYXBhY2l0eSgpOwogICAgIGlmIChj
YXBhY2l0eSAhPSBtX3JlcG9ydGVkQ2FwYWNpdHkpIHsKICAgICAgICAgSGVhcDo6aGVhcChhcnJh
eSktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCgoY2FwYWNpdHkgLSBtX3JlcG9ydGVkQ2FwYWNpdHkp
ICogKHNpemVvZih1bnNpZ25lZCkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpOwpA
QCAtMjA5LDE0ICsyMDksMTQgQEAgaW5saW5lIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFw
OjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRkKEoKIAogaW5saW5lIHZv
aWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJy
YXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAg
c3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBh
ZGQoYXJyYXksIGkpOwotICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0LmZpcnN0
LT5zZWNvbmQ7CisgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CisgICAgU3Bh
cnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIC8v
IFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJzdCBhbHdheXMgYWRkIHRvIHRo
ZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBjYXNlIHRoYXQgdGhpcyBpcyBh
IG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKICAgICAvLyBleHRlbnNpYmxlLCB0
aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWlu
LgotICAgIGlmIChyZXN1bHQuc2Vjb25kICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKLSAg
ICAgICAgcmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5ICYm
ICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRv
cik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI1MiwxNCArMjUyLDE0IEBAIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVN
YXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpCiAKIGlu
bGluZSBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dERpcmVjdChFeGVjU3RhdGUqIGV4ZWMs
IEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRyeSA9
IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBhZGQoYXJyYXks
IGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQ7CiAKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwgd2UgZmlyc3QgYWx3
YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5jb21tb24gY2FzZSB0
aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMgbm90CiAgICAgLy8g
ZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhhdmUgZG9uZSAtIHNv
IHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCAmJiAhYXJyYXktPmlzRXh0ZW5z
aWJsZSgpKSB7Ci0gICAgICAgIHJlbW92ZShyZXN1bHQuZmlyc3QpOworICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAgICAgIHJlbW92ZShy
ZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNob3VsZFRocm93
LCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4
dGVuc2libGUuIik7CiAgICAgfQogCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBKU0FycmF5Ojpl
bnRlckRpY3Rpb25hcnlNb2RlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgLy8g
VGhpcyB3aWxsIGFsd2F5cyBiZSBhIG5ldyBlbnRyeSBpbiB0aGUgbWFwLCBzbyBubyBuZWVkIHRv
IGNoZWNrIHdlIGNhbiB3cml0ZSwKICAgICAgICAgLy8gYW5kIGF0dHJpYnV0ZXMgYXJlIGRlZmF1
bHQgc28gbm8gbmVlZCB0byBzZXQgdGhlbS4KICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgbWFwLT5hZGQodGhpcywgaSkuZmlyc3QtPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywg
dmFsdWUpOworICAgICAgICAgICAgbWFwLT5hZGQodGhpcywgaSkuaXRlcmF0b3ItPnNlY29uZC5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQqIG5ld1Jhd1N0
b3JhZ2UgPSAwOwpAQCAtNDMwLDE1ICs0MzAsMTUgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25O
dW1lcmljUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHkK
ICAgICBBU1NFUlQobWFwKTsKIAogICAgIC8vIDEuIExldCBjdXJyZW50IGJlIHRoZSByZXN1bHQg
b2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdp
dGggcHJvcGVydHkgbmFtZSBQLgotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLT5hZGQodGhpcywgaW5kZXgpOwotICAgIFNwYXJz
ZUFycmF5RW50cnkqIGVudHJ5SW5NYXAgPSAmcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC0+YWRkKHRoaXMsIGluZGV4
KTsKKyAgICBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwID0gJnJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogCiAgICAgLy8gMi4gTGV0IGV4dGVuc2libGUgYmUgdGhlIHZhbHVlIG9mIHRoZSBb
W0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBPLgogICAgIC8vIDMuIElmIGN1cnJl
bnQgaXMgdW5kZWZpbmVkIGFuZCBleHRlbnNpYmxlIGlzIGZhbHNlLCB0aGVuIFJlamVjdC4KICAg
ICAvLyA0LiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBpcyB0cnVlLCB0
aGVuCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
IHsKICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUoKSkgewotICAgICAgICAgICAgbWFwLT5yZW1v
dmUocmVzdWx0LmZpcnN0KTsKKyAgICAgICAgICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5pdGVyYXRv
cik7CiAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiQXR0
ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2li
bGUuIik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CmluZGV4IGFkOThkNjYxOTBiMDNjYTU1Yzg0YTAyOGM0ODkzMDJiNTFiMThiOWIuLjg5MGZkZjRm
MGEwOTQ0ZTU4NGI2NmYxZjY0ZTM1ODEzYzk3MjQzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIE1hcDo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAg
IHR5cGVkZWYgTWFwOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlw
ZWRlZiBNYXA6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAgICAgU3BhcnNlQXJyYXlWYWx1
ZU1hcCgpCiAgICAgICAgICAgICA6IG1fZmxhZ3MoTm9ybWFsKQpAQCAtODcsNyArODgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBtYXkgbXV0YXRlIHRoZSBj
b250ZW50cyBvZiB0aGUgbWFwCiAgICAgICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIEpTQXJyYXkq
LCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIGJvb2wgcHV0
RGlyZWN0KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKEpTQXJyYXkq
LCB1bnNpZ25lZCk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoSlNBcnJheSosIHVuc2lnbmVkKTsK
ICAgICAgICAgaXRlcmF0b3IgZmluZCh1bnNpZ25lZCBpKSB7IHJldHVybiBtX21hcC5maW5kKGkp
OyB9CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIEFTU0VSVCB0aGUgcmVtb3ZlIGlzIHZhbGlkIChj
aGVjayB0aGUgcmVzdWx0IG9mIHRoZSBmaW5kKS4KICAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0
b3IgaXQpIHsgbV9tYXAucmVtb3ZlKGl0KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCmluZGV4IDhlZmI0MDY1ZTE3MzljZjA1
ZDVkOTE2NmM3NWJlY2Q4MGRkZTMwZmMuLjliYWU5NDA5NzQwMDg1MmFjYTBjMDNmNGI3OWU0MjVi
YjRjMzMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBQcm9wZXJ0eU5hbWVBcnJh
eTo6YWRkKFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICAgICBtX3NldC5hZGQobV9kYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKVtpXS5pbXBsKCkpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgh
bV9zZXQuYWRkKGlkZW50aWZpZXIpLnNlY29uZCkKKyAgICAgICAgaWYgKCFtX3NldC5hZGQoaWRl
bnRpZmllcikuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIuaAppbmRleCBlMzQwOGIwOGJiMjZhYzk0OGY3N2M3NWYyYTM4MTQxNzA4NjdkNDQxLi4xMjdk
MDI4ZTBmNTQyZjI5YjlhODBjYWE4YjcxMWYyNjZiNDlhNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCkBAIC00
OCw3ICs0OCw3IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZv
cm1DaGVjaygpCiAgICAgaW50IHNpemUgPSBtX2V4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1
cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLnNpemUoKTsKICAgICBpZiAoc2l6ZSA+PSBNYXhTbWFs
bFRocmVhZFJlZW50cnlEZXB0aCAmJiBzaXplID49IG1fZXhlYy0+Z2xvYmFsRGF0YSgpLm1heFJl
ZW50cnlEZXB0aCkKICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKCk7Ci0g
ICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4ZWMtPmdsb2JhbERhdGEoKS5zdHJpbmdSZWN1
cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZChtX3RoaXNPYmplY3QpLnNlY29uZDsKKyAgICBi
b29sIGFscmVhZHlWaXNpdGVkID0gIW1fZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lv
bkNoZWNrVmlzaXRlZE9iamVjdHMuYWRkKG1fdGhpc09iamVjdCkuaXNOZXdFbnRyeTsKICAgICBp
ZiAoYWxyZWFkeVZpc2l0ZWQpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBSZXR1
cm4gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KICAgICByZXR1cm4g
SlNWYWx1ZSgpOyAvLyBJbmRpY2F0ZSBzdWNjZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggNmVlNDE5ZGE2YTc4ZjgxMjY2YmVlMmQ2YTRhZjVj
NTZkOWVkOTc1My4uNTJlYjFjNzQ4ZDM0NzA1NTIzMDFjYWU1ZTAzMjE2NDk0MzdhNjc1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0xMDIsMTIg
KzEwMiwxMiBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogcwogICAgIC8vIE5ld2VyIHZlcnNpb25z
IG9mIHRoZSBTVEwgaGF2ZSBhbiBzdGQ6Om1ha2VfcGFpciBmdW5jdGlvbiB0aGF0IHRha2VzIHJ2
YWx1ZSByZWZlcmVuY2VzLgogICAgIC8vIFdoZW4gZWl0aGVyIG9mIHRoZSBwYXJhbWV0ZXJzIGFy
ZSBiaXRmaWVsZHMsIHRoZSBDKysgY29tcGlsZXIgd2lsbCB0cnkgdG8gYmluZCB0aGVtIGFzIGx2
YWx1ZXMsIHdoaWNoIGlzIGludmFsaWQuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHVzZSB1bmFyeSAi
KyIgdG8gbWFrZSB0aGUgcGFyYW1ldGVyIGFuIHJ2YWx1ZS4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MjYxIGZvciBtb3JlIGRldGFpbHMKLSAg
ICBzdGQ6OnBhaXI8VHJhbnNpdGlvbk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcCgp
LT5hZGQoZ2xvYmFsRGF0YSwgbWFrZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cywg
K3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIHN0cnVjdHVyZSk7Ci0gICAgaWYg
KCFyZXN1bHQuc2Vjb25kKSB7CisgICAgVHJhbnNpdGlvbk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1hcCgpLT5hZGQoZ2xvYmFsRGF0YSwgbWFrZV9wYWlyKHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2
aW91cywgK3N0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cyksIHN0cnVjdHVyZSk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAvLyBUaGVyZSBhbHJlYWR5IGlz
IGFuIGVudHJ5ISAtIHdlIHNob3VsZCBvbmx5IGhpdCB0aGlzIHdoZW4gZGVzcGVjaWZ5aW5nLgot
ICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVl
SW5QcmV2aW91cyk7CisgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3IuZ2V0KCkuc2Vjb25k
LT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUt
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwotICAgICAgICBtYXAoKS0+c2V0KHJlc3VsdC5m
aXJzdCwgc3RydWN0dXJlKTsKKyAgICAgICAgbWFwKCktPnNldChyZXN1bHQuaXRlcmF0b3IsIHN0
cnVjdHVyZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtH
Q01hcC5oCmluZGV4IDFiYjNjZDViYjNkOWJlOTY3ODMxMjllOGU1YWUyMTMwZDJlOGJmNzguLmYw
MWEwYzgyNmIxYzQ3Zjc3NGJhMzcxYjMzMmM2YWUzZDc0YmM4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgbWFwX2l0ZXJhdG9yIG1faXRlcmF0b3I7CiAgICAgfTsKIAorICAgIHR5cGVkZWYgV1RG
OjpIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKKwogICAgIFdlYWtHQ01h
cCgpCiAgICAgewogICAgIH0KQEAgLTEyMSwxNyArMTIzLDE4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fbWFwLmdldChrZXkpOwogICAgIH0KIAotICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJu
YWxUeXBlIHZhbHVlKQorICAgIEFkZFJlc3VsdCBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQo
a2V5LCAwKTsKLSAgICAgICAgaWYgKGl0ZXIuc2Vjb25kKSB7CisgICAgICAgIHR5cGVuYW1lIE1h
cFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBnbG9i
YWxEYXRhLmhlYXAuaGFuZGxlSGVhcCgpLT5hbGxvY2F0ZSgpOwotICAgICAgICAgICAgaXRlci5m
aXJzdC0+c2Vjb25kID0gc2xvdDsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
ID0gc2xvdDsKICAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFr
KHNsb3QsIHRoaXMsIEZpbmFsaXplckNhbGxiYWNrOjpmaW5hbGl6ZXJDb250ZXh0Rm9yKGtleSkp
OwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNs
b3QsIHZhbHVlKTsKICAgICAgICAgICAgICpzbG90ID0gdmFsdWU7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGl0ZXI7CisgICAgICAgIC8vIFdlYWtHQ01hcCBleHBvc2VzIGEgZGlmZmVyZW50
IGl0ZXJhdG9yLCBzbyB3ZSBuZWVkIHRvIHdyYXAgaXQgYW5kIGNyZWF0ZSBvdXIgb3duIEFkZFJl
c3VsdC4KKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChpdGVyYXRvcihyZXN1bHQuaXRlcmF0b3Ip
LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgc2V0KGl0ZXJhdG9y
IGl0ZXIsIEV4dGVybmFsVHlwZSB2YWx1ZSkKQEAgLTE0NCwxMiArMTQ3LDEyIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYg
a2V5LCBFeHRlcm5hbFR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIE1h
cFR5cGU6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7Ci0gICAgICAg
IEhhbmRsZVNsb3Qgc2xvdCA9IGl0ZXIuZmlyc3QtPnNlY29uZDsKLSAgICAgICAgaWYgKGl0ZXIu
c2Vjb25kKSB7CisgICAgICAgIHR5cGVuYW1lIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X21hcC5hZGQoa2V5LCAwKTsKKyAgICAgICAgSGFuZGxlU2xvdCBzbG90ID0gcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQ7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAg
ICAgc2xvdCA9IGdsb2JhbERhdGEuaGVhcC5oYW5kbGVIZWFwKCktPmFsbG9jYXRlKCk7CiAgICAg
ICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBr
ZXkpOwotICAgICAgICAgICAgaXRlci5maXJzdC0+c2Vjb25kID0gc2xvdDsKKyAgICAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gc2xvdDsKICAgICAgICAgfQogICAgICAgICBIYW5k
bGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwgdmFsdWUpOwogICAgICAg
ICAqc2xvdCA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1Byb2ZpbGVUcmVlTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVU
cmVlTm9kZS5oCmluZGV4IDYwZDU5OTI4YTQ2N2E2MTdlMmYzYTc4MWViZTIwMDUxNWUzNmQ5MDAu
LjlkZTM5YWQ4YTI5ODYyMmM0MzNhNjdlYjY0YTcyMjA0ZGUxOWU2YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgKQEAgLTUwLDggKzUwLDggQEAg
cHVibGljOgogICAgICAgICAgICAgbV9jaGlsZHJlbiA9IG5ldyBNYXAoKTsKICAgICAKICAgICAg
ICAgUHJvZmlsZVRyZWVOb2RlIG5ld0VudHJ5OwotICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fY2hpbGRyZW4tPmFkZChTdHJpbmcobmFtZSksIG5ld0VudHJ5KTsK
LSAgICAgICAgUHJvZmlsZVRyZWVOb2RlKiBjaGlsZEluTWFwID0gJnJlc3VsdC5maXJzdC0+c2Vj
b25kOworICAgICAgICBNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQoU3Ry
aW5nKG5hbWUpLCBuZXdFbnRyeSk7CisgICAgICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJbk1h
cCA9ICZyZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgKytjaGlsZEluTWFwLT5tX2Nv
dW50OwogICAgICAgICByZXR1cm4gY2hpbGRJbk1hcDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRT
ZXQuaAppbmRleCBjYWZiMjY0OWViNjI0NzFhY2M5NmY0Y2YzNzg5ZWMwNDlkNzQwMGVlLi5kN2Q5
ZTQzYTlhNTVhMWZkZmE4ODNmNzg5N2ExMDc3OTlhNWNmZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVk
U2V0LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYg
VmFsdWUgVmFsdWVUeXBlOwogICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjppdGVy
YXRvciBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5
cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAgICAgICAgIAogICAgICAgICBIYXNoQ291bnRlZFNl
dCgpIHt9CiAgICAgICAgIApAQCAtNTcsNyArNTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gSW5jcmVhc2VzIHRoZSBjb3VudCBpZiBhbiBlcXVhbCB2YWx1ZSBpcyBhbHJlYWR5IHBy
ZXNlbnQKICAgICAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50ZXJh
dG9yIHRvIHRoZSBuZXcgdmFsdWUncyAKICAgICAgICAgLy8gbG9jYXRpb24sIGFuZCBhIGJvb2wg
dGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQuCi0gICAgICAgIHN0ZDo6cGFp
cjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1
bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgICAKICAgICAgICAgLy8gUmVkdWNlcyB0
aGUgY291bnQgb2YgdGhlIHZhbHVlLCBhbmQgcmVtb3ZlcyBpdCBpZiBjb3VudAogICAgICAgICAv
LyBnb2VzIGRvd24gdG8gemVybywgcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyByZW1vdmVk
LgpAQCAtMTQyLDEwICsxNDMsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHM+Ci0gICAgaW5saW5lIHN0ZDo6cGFpcjx0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2
YWx1ZSkKKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cz46OkFkZFJlc3VsdCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCiAgICAgewotICAgICAg
ICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsgCi0g
ICAgICAgICsrcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIEFkZFJlc3VsdCByZXN1bHQg
PSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsKKyAgICAgICAgKytyZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggYmU3
ZTllYmVkMTM3OTNiYTc4ZTBjYWZkNzM5MDViMWUwNGMzMDU3OC4uMjZhOWQ5YzVjYjE1OGQzYTVm
ZWI3MmVjNWNjODUwYThlNjAxNjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVU
eXBlPiBjb25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVU
eXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHN3
YXAoSGFzaE1hcCYpOwpAQCAtOTQsMTIgKzk1LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtleSBpZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50
CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRo
ZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQncyB0cnVlIGlm
IGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRk
UmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAg
Ly8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8gcmV0
dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwg
CiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2Fz
IGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBL
ZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0
IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25z
dCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTEyMiwxMiAr
MTIzLDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFQmKTsKICAgICAgICAgLy8gICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBWYWx1
ZVR5cGUmLCBjb25zdCBUJik7CiAgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5
cGUmLCBjb25zdCBUJiwgdW5zaWduZWQgaGFzaENvZGUpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRk
KGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYsIE1hcHBl
ZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNv
bnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKKyAgICAgICAgQWRkUmVz
dWx0IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7
CiAKICAgICAgICAgY2xhc3MgSGFzaE1hcEtleXNQcm94eSA6IHByaXZhdGUgSGFzaE1hcCB7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTMxOSwzNCArMzIwLDM0IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5l
QWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSBtYXBwZWQp
IAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5z
bGF0b3I8VmFsdWVUcmFpdHMsIEhhc2hGdW5jdGlvbnM+ID4oa2V5LCBtYXBwZWQpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzZXQoY29uc3QgS2V5VHlw
ZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgCiAgICAgewotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGluZUFk
ZChrZXksIG1hcHBlZCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBoYXNo
IHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgotICAgICAgICAg
ICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAg
ICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRZUEUsIHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yPgotICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0
b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0
CiAgICAgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IFRZUEUmIGtleSwgTWFwcGVk
UGFzc0luVHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
YWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxWYWx1ZVRyYWl0cywg
SGFzaFRyYW5zbGF0b3I+ID4oa2V5LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4K
LSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29s
PgorICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhh
c2hNYXA8VCwgVSwgViwgVywgWD46OmFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJ
blR5cGUgbWFwcGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1hcHBl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoU2V0LmgKaW5kZXggMzNjYjE0ZGFhYjY4MjY4N2YwYWU4ZTZjMmM4ZjFiMmJhZWY4YWI5
Ni4uMWIzYjJlMjg3MzM0MzliMTBiYjc1M2M5MDRkNTRmZmVjNTVmMjVjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaApA
QCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVU
eXBlPiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh
cHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAg
ICAgICAgdm9pZCBzd2FwKEhhc2hTZXQmKTsKIApAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogICAgICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBpbnRl
cmF0b3IgdG8gdGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9v
bCB0aGF0IGlzIHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICAgICAgcGFpcjxp
dGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQg
YWRkKGNvbnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIC8vIEFuIGFsdGVybmF0ZSB2ZXJzaW9u
IG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5nIGFuZCBjb21wYXJpbmcK
ICAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5
cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKQEAgLTg2LDcgKzg3LDcgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vICAgc3RhdGljIHRyYW5zbGF0ZShWYWx1ZVR5cGUm
LCBjb25zdCBUJiwgdW5zaWduZWQgaGFzaENvZGUpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgc28gdGhhdCBj
YWxsZXJzCiAgICAgICAgIC8vIGNhbiBqdXN0IHBhc3MgdGhlIHRyYW5zbGF0b3IgYW5kIGxldCB0
aGUgY29tcGlsZXIgZGVkdWNlIFQuCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVCYpOwor
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gQWRk
UmVzdWx0IGFkZChjb25zdCBUJik7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVU
eXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTE3NywxNCArMTc4LDE0
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxU
LCBVLCBWPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25zdCBWYWx1
ZVR5cGUmIHZhbHVlKQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+OjpBZGRS
ZXN1bHQgSGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gbV9pbXBsLmFkZCh2YWx1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAg
ICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHM+OjppdGVyYXRvciwgYm9vbD4KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0CiAgICAgSGFzaFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNzaW5nSGFzaENvZGU8SGFzaFNldFRyYW5zbGF0
b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPiA+KHZhbHVlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmlu
ZGV4IDA1NzIyZDljNTU2YTc5N2I0MTg4MDcyMGQ3Y2UzMDA1N2ZiNWY2YjYuLjliZDU0ODJmYWNl
YjcyMDk0NGNlNGM1MzExNzQ3NDBiZTQzYmI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0yOTYsNiAr
Mjk2LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIGNvbnN0IFUmLCBj
b25zdCBUJiB2YWx1ZSkgeyBsb2NhdGlvbiA9IHZhbHVlOyB9CiAgICAgfTsKIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4gc3RydWN0IEhhc2hUYWJsZUFkZFJlc3VsdCB7Cisg
ICAgICAgIEhhc2hUYWJsZUFkZFJlc3VsdChJdGVyYXRvclR5cGUgaXRlciwgYm9vbCBpc05ld0Vu
dHJ5KSA6IGl0ZXJhdG9yKGl0ZXIpLCBpc05ld0VudHJ5KGlzTmV3RW50cnkpIHsgfQorICAgICAg
ICBJdGVyYXRvclR5cGUgaXRlcmF0b3I7CisgICAgICAgIGJvb2wgaXNOZXdFbnRyeTsKKyAgICB9
OworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4KICAgICBjbGFzcyBIYXNoVGFibGUgewogICAgIHB1YmxpYzoKQEAgLTMw
NSw2ICszMTEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlw
ZTsKICAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgSWRl
bnRpdHlIYXNoVHJhbnNsYXRvcjxIYXNoRnVuY3Rpb25zPiBJZGVudGl0eVRyYW5zbGF0b3JUeXBl
OworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUFkZFJlc3VsdDxpdGVyYXRvcj4gQWRkUmVzdWx0
OwogCiAgICAgICAgIEhhc2hUYWJsZSgpOwogICAgICAgICB+SGFzaFRhYmxlKCkgCkBAIC0zMzAs
MTMgKzMzNywxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV90YWJsZVNpemU7IH0KICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIW1fa2V5Q291bnQ7IH0KIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBh
ZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRv
clR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsgfQorICAgICAgICBBZGRS
ZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRy
YW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0KIAogICAg
ICAgICAvLyBBIHNwZWNpYWwgdmVyc2lvbiBvZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3Qg
YnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCiAgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBl
LCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBh
bHJlYWR5CiAgICAgICAgIC8vIGluIHRoZSB0YWJsZS4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBwYWlyPGl0ZXJh
dG9yLCBib29sPiBhZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOwotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNv
bnN0IEV4dHJhJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0
eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZChjb25zdCBUJiBrZXksIGNv
bnN0IEV4dHJhJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0
eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZFBhc3NpbmdIYXNoQ29kZShj
b25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7CiAKICAgICAgICAgaXRlcmF0b3IgZmluZChjb25z
dCBLZXlUeXBlJiBrZXkpIHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5
KTsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29u
c3QgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9CkBAIC02NjUs
NyArNjcyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBp
bmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
OmFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25z
dCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4o
a2V5KTsKIApAQCAtNzAwLDcgKzcwNyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoSGFz
aFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUtub3duR29vZEl0ZXJh
dG9yKGVudHJ5KSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0
KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5OwpAQCAtNzExLDcgKzcxOCw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkK
ICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7CiAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50
cnkpLCBrZXkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFr
ZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAg
ICAgICAgICAgIH0KICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwogICAgICAgICAgICAgKytwcm9i
ZUNvdW50OwpAQCAtNzM4LDE5ICs3NDUsMTkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAg
ICAvLyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBhbmQgcmV0dXJuIHRoZSBuZXcgcG9zaXRpb24uCiAg
ICAgICAgICAgICBLZXlUeXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5
KTsKICAgICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9v
bD4gcCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQoZW50ZXJlZEtleSksIHRydWUpOwotICAgICAgICAg
ICAgQVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkpOwotICAgICAgICAgICAgcmV0dXJuIHA7CisgICAg
ICAgICAgICBBZGRSZXN1bHQgcmVzdWx0KGZpbmQoZW50ZXJlZEtleSksIHRydWUpOworICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvciAhPSBlbmQoKSk7CisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOworICAgICAgICByZXR1cm4gQWRk
UmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6aXRl
cmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwg
Y29uc3QgRXh0cmEmIGV4dHJhKQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OkFkZFJl
c3VsdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4
dHJhJiBleHRyYSkKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkp
OwogCkBAIC03NjgsNyArNzc1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHVuc2lnbmVk
IGggPSBsb29rdXBSZXN1bHQuc2Vjb25kOwogICAgICAgICAKICAgICAgICAgaWYgKGZvdW5kKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihl
bnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29v
ZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAKICAgICAgICAgaWYgKGlzRGVsZXRl
ZEJ1Y2tldCgqZW50cnkpKSB7CiAgICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7
CkBAIC03ODMsMTQgKzc5MCwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIC8vIGZv
bGxvdyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBwb3NpdGlvbi4KICAgICAgICAg
ICAgIEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpOwogICAg
ICAgICAgICAgZXhwYW5kKCk7Ci0gICAgICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBwID0g
c3RkOjptYWtlX3BhaXIoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NF
UlQocC5maXJzdCAhPSBlbmQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgICAg
IEFkZFJlc3VsdCByZXN1bHQoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7CisgICAgICAgICAgICBB
U1NFUlQocmVzdWx0Lml0ZXJhdG9yICE9IGVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgp
OwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRl
cmF0b3IoZW50cnkpLCB0cnVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgK
aW5kZXggNzk5NDY2ZmE5OGM2ZGY3ZTI1YjIwNjdjMmEyMDBmNDc5NDczYWMxMi4uMjFlMzhkODNh
YjQ3MDY3ODFjMzdiMTUxZjFkY2UxMTIyNDkzMmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTGlzdEhhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCkBAIC04
MSw2ICs4MSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
Q29uc3RSZXZlcnNlSXRlcmF0b3I8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz4g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0
Q29uc3RSZXZlcnNlSXRlcmF0b3I8VmFsdWVUeXBlLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFyZz47
CiAKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3Vs
dDsKKwogICAgICAgICBMaXN0SGFzaFNldCgpOwogICAgICAgICBMaXN0SGFzaFNldChjb25zdCBM
aXN0SGFzaFNldCYpOwogICAgICAgICBMaXN0SGFzaFNldCYgb3BlcmF0b3I9KGNvbnN0IExpc3RI
YXNoU2V0Jik7CkBAIC0xMjQsMTAgKzEyNiwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAg
ICAvLyBUaGUgcmV0dXJuIHZhbHVlIG9mIGFkZCBpcyBhIHBhaXIgb2YgYW4gaXRlcmF0b3IgdG8g
dGhlIG5ldyB2YWx1ZSdzIGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5kIGEgYm9vbCB0aGF0IGlz
IHRydWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0
IFZhbHVlVHlwZSYpOwogCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydEJlZm9y
ZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVl
KTsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0
LCBjb25zdCBWYWx1ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGluc2VydEJlZm9yZShjb25z
dCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKTsKKyAg
ICAgICAgQWRkUmVzdWx0IGluc2VydEJlZm9yZShpdGVyYXRvciwgY29uc3QgVmFsdWVUeXBlJik7
CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgICAgIHZvaWQg
cmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTY5NSwyNiArNjk3LDI1IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBV
Pjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8
VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRSZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2Fw
YWNpdHksIFU+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKICAgICB7Ci0gICAgICAgIHBh
aXI8dHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwudGVt
cGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOwotICAg
ICAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgIGFwcGVuZE5vZGUoKnJlc3VsdC5m
aXJzdCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlSXRlcmF0b3IoKnJlc3Vs
dC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOworICAgICAgICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVl
LCBtX2FsbG9jYXRvci5nZXQoKSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgICAgIGFwcGVuZE5vZGUoKnJlc3VsdC5pdGVyYXRvcik7CisgICAgICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBVPgotICAgIHBhaXI8dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+OjppdGVyYXRvciwgYm9vbD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNp
dHksIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFs
dWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRS
ZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoaXRl
cmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpCiAgICAgewotICAgICAgICBwYWly
PHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pbXBsLnRlbXBs
YXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG1fYWxsb2NhdG9yLmdldCgpKTsKLSAg
ICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGl0
Lm5vZGUoKSwgKnJlc3VsdC5maXJzdCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpciht
YWtlSXRlcmF0b3IoKnJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwotCisgICAgICAgIHR5
cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxC
YXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2Rl
KCksICpyZXN1bHQuaXRlcmF0b3IpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVy
YXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4K
LSAgICBwYWlyPHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRl
cmF0b3IsIGJvb2w+IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVm
b3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFs
dWUpCisgICAgdHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpBZGRS
ZXN1bHQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoY29u
c3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBpbnNlcnRCZWZvcmUoZmluZChiZWZvcmVWYWx1ZSksIG5ld1Zh
bHVlKTsgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5o
IGIvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCmluZGV4IGY0OGE1OWNmNjM3MDIyNjQw
NDI1MjAzYzhlNDJkMTZiZWQ4YjUxNzMuLjBhZjM2YmU2MDI3ZmI1MDBiYmZlYTVjMjFkYzZlMDhj
ZGYwMTlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9y
QWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGl0ZXJhdG9yOwogICAgICAgICB0eXBl
ZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlw
ZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlw
ZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAgICAgICB2b2lkIHN3YXAoSGFzaE1hcCYpOwog
CkBAIC04NiwxNCArODcsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIHJlcGxhY2Vz
IHZhbHVlIGJ1dCBub3Qga2V5IGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAgLy8g
cmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlv
biwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUg
d2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChjb25z
dCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBzZXQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1
bHQgc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKKyAgICAgICAgQWRkUmVz
dWx0IHNldChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICAvLyBkb2Vz
IG5vdGhpbmcgaWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFs
dWUgaXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAg
ICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFs
bHkgYWRkZWQKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUm
LCBNYXBwZWRQYXNzSW5UeXBlKTsgCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChS
YXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29u
c3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOworICAgICAgICBBZGRSZXN1bHQgYWRkKFJh
d0tleVR5cGUsIE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IEtleVR5cGUmKTsKICAgICAgICAgdm9pZCByZW1vdmUoUmF3S2V5VHlwZSk7CkBAIC0xMDQsOCAr
MTA1LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIE1hcHBlZFBhc3NPdXRUeXBlIHRha2Uo
UmF3S2V5VHlwZSk7IC8vIGVmZmljaWVudCBjb21iaW5hdGlvbiBvZiBnZXQgd2l0aCByZW1vdmUK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChj
b25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7Ci0gICAgICAgIHBhaXI8
aXRlcmF0b3IsIGJvb2w+IGlubGluZUFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5SZWZlcmVu
Y2VUeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFw
cGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoUmF3
S2V5VHlwZSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CiAKICAgICAgICAgSGFzaFRhYmxl
VHlwZSBtX2ltcGw7CiAgICAgfTsKQEAgLTE5NSw1MiArMTk2LDUyIEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFz
aE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICBpbmxpbmUg
dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBI
YXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBr
ZXksIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPFRyYW5zbGF0b3I+KGtleSwgbWFwcGVkKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVm
UHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1l
IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxS
ZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQoUmF3S2V5VHlwZSBrZXksIE1hcHBlZFBh
c3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgYWRkPFRyYW5zbGF0b3I+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPgotICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+
OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwg
VywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2V0
KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQpIAogICAgIHsKLSAg
ICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVk
KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFkZFJlc3VsdCByZXN1
bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91bmQgYW4g
ZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBlZCB2YWx1
ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuZmlyc3Qt
PnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRy
PFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUgSGFzaE1hcDxS
ZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46OnNldChSYXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQp
IAogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFk
ZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJv
dmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhl
IG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCBy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1h
cHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhh
c2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5h
bWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFw
PFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBh
c3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlubGluZUFkZChrZXksIG1h
cHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hN
YXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUg
SGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJl
ZlB0cjxUPiwgVSwgViwgVywgWD46OmFkZChSYXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luVHlw
ZSBtYXBwZWQpCiAgICAgewogICAgICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9T
cGVjdHJ1bS5oCmluZGV4IDU5YmM0YTI5YTlkOGQ3NzUxYjJkZDFkMDMxYjg1MjNjNjViNjM0N2Qu
LjVlN2E0ODRjZDg3NjZiY2FmMjJjYTRjOTNkZGNlOTcwZGQyYmEyMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKKysrIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaApA
QCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhZGQoY29uc3QgVCYga2V5
LCB1bnNpZ25lZCBsb25nIGNvdW50ID0gMSkKICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgY291bnQpOwotICAgICAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSBjb3Vu
dDsKKyAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDxULCB1bnNpZ25lZCBsb25nPjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGNvdW50KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9IGNvdW50Owog
ICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBsb25nIGdldChjb25zdCBUJiBrZXkpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1dURlRocmVhZERhdGEuY3BwCmluZGV4IGVjNWRlNzIyMDBmNTc1ZDc3NGNjMjBkOTFhOTM4
ZTlkOWQ5ZjAyNjkuLjNhOTAzZjg5NWUwZjk2NWY0NjRmZWNmOGIwOWNiYTkzNzI0MGJkMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1dURlRocmVhZERhdGEuY3BwCkBAIC02MywxMCArNjMsMTAgQEAgSWRlbnRpZmllclRh
YmxlOjp+SWRlbnRpZmllclRhYmxlKCkKICAgICAgICAgKCppdGVyKS0+c2V0SXNJZGVudGlmaWVy
KGZhbHNlKTsKIH0KIAotc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwg
Ym9vbD4gSWRlbnRpZmllclRhYmxlOjphZGQoU3RyaW5nSW1wbCogdmFsdWUpCitIYXNoU2V0PFN0
cmluZ0ltcGwqPjo6QWRkUmVzdWx0IElkZW50aWZpZXJUYWJsZTo6YWRkKFN0cmluZ0ltcGwqIHZh
bHVlKQogewotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkKHZhbHVlKTsKLSAgICAoKnJlc3VsdC5maXJzdCktPnNl
dElzSWRlbnRpZmllcih0cnVlKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fdGFibGUuYWRkKHZhbHVlKTsKKyAgICAoKnJlc3VsdC5pdGVyYXRvciktPnNl
dElzSWRlbnRpZmllcih0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmggYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJl
YWREYXRhLmgKaW5kZXggYjAyZDEwZDdjODE5MWE3YTVmZTdiNWU3YTcyNDQyZjU2OGZkNDY3ZC4u
ZGJjNWJhNmFjNTRmODU4YTcyNDhiNzNjYzA5Njk3NjlmMDlhM2FiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVh
ZERhdGEuaApAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBJZGVudGlmaWVyVGFibGUgewogcHVibGlj
OgogICAgIH5JZGVudGlmaWVyVGFibGUoKTsKIAotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmlu
Z0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZChTdHJpbmdJbXBsKiB2YWx1ZSk7CisgICAgSGFz
aFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGQoU3RyaW5nSW1wbCogdmFsdWUpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8
U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkKFUgdmFsdWUpOworICAgIEhhc2hTZXQ8
U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkKFUgdmFsdWUpOwogCiAgICAgYm9vbCByZW1vdmUo
U3RyaW5nSW1wbCogcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5k
ZXggZDc3NWU3YmI5NGZmZTA2MzZkZjMzYmEyZGUzZWQ1YzM1YzlmOTFkYy4uNjZiZDc4NTFhMDA1
MmRjNGUxOTZjMWJiNDBhNWQzYTgxMzk1ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcApAQCAtNzgsMTEgKzc4LDExIEBAIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmdJ
bXBsKj4mIHN0cmluZ1RhYmxlKCkKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yPgogc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFRvU3Ry
aW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCiB7Ci0gICAgcGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwq
Pjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IHN0cmluZ1RhYmxlKCkuYWRkPFQsIEhhc2hU
cmFuc2xhdG9yPih2YWx1ZSk7CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBh
ZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFkZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOwog
CiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQg
dG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYg
dGhhdCBpcyBzby4KLSAgICByZXR1cm4gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRS
ZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5maXJzdDsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lmlz
TmV3RW50cnkgPyBhZG9wdFJlZigqYWRkUmVzdWx0Lml0ZXJhdG9yKSA6ICphZGRSZXN1bHQuaXRl
cmF0b3I7CiB9CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvciB7CkBAIC0zMDAsNyArMzAwLDcg
QEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmlu
Z0ltcGwqIHIpCiAgICAgaWYgKCFyLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZ0lt
cGw6OmVtcHR5KCk7CiAKLSAgICBTdHJpbmdJbXBsKiByZXN1bHQgPSAqc3RyaW5nVGFibGUoKS5h
ZGQocikuZmlyc3Q7CisgICAgU3RyaW5nSW1wbCogcmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRk
KHIpLml0ZXJhdG9yOwogICAgIGlmIChyZXN1bHQgPT0gcikKICAgICAgICAgci0+c2V0SXNBdG9t
aWModHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IDQxNThjOThkN2ZmODc0MDM4ZTUxN2I2MGQxOTczYzcyOGRjZmFiNzkuLjgzN2I4
ZmJkMjIwNWFkYzk3NDg2ZGQzZjBlOGYwMjA3MzgwZjhkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6OmFjcXVpcmVMb2NrKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICBDb29y
ZGluYXRpb25JbmZvTWFwOjppdGVyYXRvciBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nv
b3JkaW5hdGlvbkluZm9NYXAuZmluZChkYklkZW50aWZpZXIpOwogICAgIGlmIChjb29yZGluYXRp
b25JbmZvSXRlcmF0b3IgPT0gbV9jb29yZGluYXRpb25JbmZvTWFwLmVuZCgpKSB7CiAgICAgICAg
IC8vIE5vIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciB0aGlzIERCCi0gICAgICAgIGNvb3JkaW5h
dGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRpbmF0aW9uSW5mb01hcC5hZGQoZGJJZGVudGlmaWVy
LCBDb29yZGluYXRpb25JbmZvKCkpLmZpcnN0OworICAgICAgICBjb29yZGluYXRpb25JbmZvSXRl
cmF0b3IgPSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuYWRkKGRiSWRlbnRpZmllciwgQ29vcmRpbmF0
aW9uSW5mbygpKS5pdGVyYXRvcjsKICAgICB9CiAKICAgICBDb29yZGluYXRpb25JbmZvJiBpbmZv
ID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yLT5zZWNvbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5j
cHAKaW5kZXggMmEwOTYyNzk4YmJlZjMyNTRkMDE3NTgzODU3MWJlM2I0MTI3MTY2Ny4uMTBiMDhh
MmI3MjNjZGEyOTIwZDQzZGVmYTE4YzMxMTVlZmExYjIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2Vy
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFF1b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VT
aXplKAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZVNpemUpCiB7CiAgICAgTXV0ZXhM
b2NrZXIgbG9ja0RhdGEobV9kYXRhR3VhcmQpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBTaXplTWFw
Pjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlU2l6ZXMuYWRkKG9yaWdpbklkZW50aWZpZXIsIFNp
emVNYXAoKSkuZmlyc3Q7CisgICAgSGFzaE1hcDxTdHJpbmcsIFNpemVNYXA+OjppdGVyYXRvciBp
dCA9IG1fZGF0YWJhc2VTaXplcy5hZGQob3JpZ2luSWRlbnRpZmllciwgU2l6ZU1hcCgpKS5pdGVy
YXRvcjsKICAgICBpdC0+c2Vjb25kLnNldChkYXRhYmFzZU5hbWUsIGRhdGFiYXNlU2l6ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQppbmRleCAwNjQ5N2E0YjA5ZGNhMGY0MWQyNzgzOTNlYWQzNzZmY2Vl
YmFmYzY3Li4wNzRjNzRlZGY4ZWJlNTM3YjM2ZjE1Zjk0YTQ3ZTdkMTQxZGYzMTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlCkBAIC0xMSw2ICsxMSwxNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9JTkNM
VURFUwogICAgIGJpbmRpbmdzL2pzCiApCiAKK0lGIChQT1JUIE1BVENIRVMgIkJsYWNrQmVycnki
KQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0lOQ0xVREVTCisgICAgICAgIHRlc3Rpbmcv
anMKKyAgICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKKyAgICAgICAgdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisgICAgICAgIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
KyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcAogICAgIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhh
c2hUYWJsZU1hcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TU9iamVjdEhhc2hUYWJsZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmgKaW5kZXggMmMwZTk0ODM2ZjNjNjQ3MjIyMmFiNjcyZDQzMzc3N2Yz
ZTFhNjA3Ny4uMjE2Yjk0NWM0OWI5MTFlM2Y0NWVmZTVhN2U0YzEzMjk2ZjMwZWIxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFz
aFRhYmxlKiwgSlNDOjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChzdGF0
aWNUYWJsZSk7CiAgICAgICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAg
cmV0dXJuICZpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0YXRpY1Rh
YmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5maXJzdC0+c2Vjb25kOworICAgICAg
ICByZXR1cm4gJm1fbWFwLnNldChzdGF0aWNUYWJsZSwgSlNDOjpIYXNoVGFibGUoKnN0YXRpY1Rh
YmxlKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAwMDUwYTczMTU3ZmRmY2I1ZGUw
NzYxZjMyNWY2ZmQxNWFjMDAwNzZkLi5jMTFmNjAxMDM4YTY2MDA2OWJhYTVkOTkyNmNjMjVkMmJl
ZDA0ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
QEAgLTI1OCw3ICsyNTgsNyBAQCBTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dQogewogICAgIEpTRE9N
U3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmVzKCk7CiAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5mbykpOwotICAgIHJldHVybiBz
dHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLmZpcnN0LT5zZWNv
bmQuZ2V0KCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5mbywgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKSkuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIH0KIAogSlNDOjpKU09iamVjdCog
dG9KU1NlcXVlbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggYjA0
OWQ5YjJjYWU1MGNiM2MzMzE2ZjdiMzgyMDBkOGM4N2ZkNjBkZC4uN2VlYmM3N2Q0MDExYjg0Mjhl
MWEzN2RkYjhiYzQ5NDZiM2Y3ZWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKQEAgLTE0Miw4ICsxNDIsOCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xp
Y3kgewogICAgICAgICBpZiAoc2V0SW5saW5lQ2FjaGVkV3JhcHBlcih3b3JsZCwgZG9tT2JqZWN0
LCB3cmFwcGVyKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgSlNDOjpQYXNzV2VhazxK
U0RPTVdyYXBwZXI+IHBhc3NXZWFrKCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCB3cmFw
cGVyT3duZXIod29ybGQsIGRvbU9iamVjdCksIHdyYXBwZXJDb250ZXh0KHdvcmxkLCBkb21PYmpl
Y3QpKTsKLSAgICAgICAgcGFpcjxET01PYmplY3RXcmFwcGVyTWFwOjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gd29ybGQtPm1fd3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWspOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgIERPTU9i
amVjdFdyYXBwZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSB3b3JsZC0+bV93cmFwcGVycy5hZGQo
ZG9tT2JqZWN0LCBwYXNzV2Vhayk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNz
PiBpbmxpbmUgdm9pZCB1bmNhY2hlV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBET01D
bGFzcyogZG9tT2JqZWN0LCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBhZGNkMzg4OWZmMjc4N2Uw
ZmE0YTIyMGRhYzY0NzY1NTc2ZDg1MTEwLi43NGYzNWIwYjc5MmMxYzA2MDM3ZDFhZGVmM2IyMzEz
NjU4YTkyZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmgKQEAgLTk1LDcgKzk1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBK
U0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yQ2xhc3M6OmNyZWF0ZShleGVj
LCBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKICAgICAgICAgQVNTRVJUKCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuY29udGFpbnMoJkNvbnN0cnVjdG9yQ2xh
c3M6OnNfaW5mbykpOwogICAgICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiB0
ZW1wOwotICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpzX2luZm8sIHRlbXApLmZp
cnN0LT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBjb25zdHJ1
Y3Rvcik7CisgICAgICAgIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVtcCku
aXRlcmF0b3ItPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNv
bnN0cnVjdG9yKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
aW5kZXggYzhmMTZmNWE5NjE2NWJlOGUxM2RiMmJlYjVlYWIxNjA4MzdlOTIwYy4uYmRlZTQ2ODdk
NmMwNDIxMTYzZWU4OWMzYjAxMGM2YTRiOGU3ZGVlYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC04MiwxMSArODIs
MTEgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICBBU1NFUlRfQVJHKGxpc3RlbmVyLCBs
aXN0ZW5lcik7CiAgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKIAotICAgIHBhaXI8UGFnZUxp
c3RlbmVyc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGFnZUxpc3RlbmVyc01hcC5h
ZGQocGFnZSwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OworICAgIFBhZ2VMaXN0ZW5lcnNNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcg
TGlzdGVuZXJTZXQ7CiAKLSAgICBMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gcmVzdWx0LmZpcnN0
LT5zZWNvbmQ7CisgICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9IHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGxpc3RlbmVycy0+YWRkKGxpc3RlbmVyKTsKIAogICAgIHJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zU29vbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGY0OTVjZWRjODYzOWYwZmYzYWM5N2NjMzYzYzYzN2Fj
NDFjZDMyNTAuLjEwZGVkNzAwNzA3OTQwMjNkYzdlZDIxMjk5ZmNmYjI0ODYxMjE3ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgU3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNv
bnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWEKICAgICAgICAgcmV0dXJuICIi
OwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlk
VG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3Bv
aW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgpKS5maXJzdDsKKyAg
ICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGlu
ZVRvQnJlYWtwb2ludE1hcCgpKS5pdGVyYXRvcjsKICAgICBpZiAoaXQtPnNlY29uZC5jb250YWlu
cyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKSkKICAgICAgICAgcmV0dXJuICIiOwog
ICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIHNjcmlw
dEJyZWFrcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTZmMGE4MTQ4NzQxMzdmNTI1YmM0OTUzNmUzMTQy
ZmExODgyMmVkZS4uN2FjMTU1Y2NlNmNjMmE0ZGQ5YWI3YmFjNzdkMTUwOTQ4ZWFmYzAwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0zOTIsMTMgKzM5MiwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnRPYmpl
Y3RJbnRlcm5hbChKU09iamVjdCogb2JqZWN0KQogICAgIHsKICAgICAgICAgLy8gUmVjb3JkIG9i
amVjdCBmb3IgZ3JhcGggcmVjb25zdHJ1Y3Rpb24KLSAgICAgICAgcGFpcjxPYmplY3RQb29sOjpp
dGVyYXRvciwgYm9vbD4gaXRlciA9IG1fb2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBv
b2wuc2l6ZSgpKTsKKyAgICAgICAgT2JqZWN0UG9vbDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1f
b2JqZWN0UG9vbC5hZGQob2JqZWN0LCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEhhbmRsZSBkdXBsaWNhdGUgcmVmZXJlbmNlcwotICAgICAgICBpZiAoIWl0ZXIu
c2Vjb25kKSB7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
ICAgIHdyaXRlKE9iamVjdFJlZmVyZW5jZVRhZyk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oaXRlci5maXJzdC0+c2Vjb25kKSA8IG1fb2JqZWN0UG9vbC5zaXplKCkp
OwotICAgICAgICAgICAgd3JpdGVPYmplY3RJbmRleChpdGVyLmZpcnN0LT5zZWNvbmQpOworICAg
ICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGFkZFJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kKSA8IG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAgICAgICAgd3JpdGVPYmplY3RJ
bmRleChhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03MjYsMTAgKzcyNiwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd3JpdGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBV
U3RyaW5nIHN0ciA9IGlkZW50LnVzdHJpbmcoKTsKLSAgICAgICAgcGFpcjxTdHJpbmdDb25zdGFu
dFBvb2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBs
KCksIG1fY29uc3RhbnRQb29sLnNpemUoKSk7Ci0gICAgICAgIGlmICghaXRlci5zZWNvbmQpIHsK
KyAgICAgICAgU3RyaW5nQ29uc3RhbnRQb29sOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9jb25z
dGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29sLnNpemUoKSk7CisgICAgICAg
IGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIHdyaXRlKFN0cmluZ1Bv
b2xUYWcpOwotICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChpdGVyLmZpcnN0LT5zZWNvbmQp
OworICAgICAgICAgICAgd3JpdGVTdHJpbmdJbmRleChhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9OUFY4T2JqZWN0LmNwcAppbmRleCA2ZmRmMzczNDJlMDMwY2Q2ZWVkYTVmNzEwYWI5
MmVhOTE5M2E0MGQwLi41YzMzNTkzNzcwNWVmMjNjODZkNjY3MGJiMWNiOTM4N2FmMzY4MTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcApAQCAtMTYzLDcgKzE2
Myw3IEBAIE5QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewotICAgICAgICBpdGVyID0gc3RhdGljVjhOUE9iamVjdE1hcCgpLT5zZXQo
djhPYmplY3RIYXNoLCBWOE5QT2JqZWN0VmVjdG9yKCkpLmZpcnN0OyAKKyAgICAgICAgaXRlciA9
IHN0YXRpY1Y4TlBPYmplY3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFzaCwgVjhOUE9iamVjdFZlY3Rv
cigpKS5pdGVyYXRvcjsKICAgICB9CiAKICAgICBWOE5QT2JqZWN0KiB2OG5wT2JqZWN0ID0gcmVp
bnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4oX05QTl9DcmVhdGVPYmplY3QobnBwLCAmVjhOUE9i
amVjdENsYXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmll
clJlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKaW5kZXgg
ZmVkNDdjYTVlZWU4NjY2MDE2MjQ1OGUzZTEwNGY0NjEyZjFkZjhmZi4uMmFjZjE0MTUzZDFkYjll
MTJiNzI1NThhNTM4OGQ5ODZmZjhhNWU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL0lkZW50aWZpZXJSZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlm
aWVyUmVwLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIElkZW50aWZpZXJSZXAqIElkZW50aWZpZXJS
ZXA6OmdldChpbnQgaW50SUQpCiAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogICAgIH0KICAg
ICAKLSAgICBwYWlyPEludElkZW50aWZpZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBp
bnRJZGVudGlmaWVyTWFwKCkuYWRkKGludElELCAwKTsgCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQp
IHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAoaW50SUQpOworICAgIEludElkZW50
aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBpbnRJZGVudGlmaWVyTWFwKCkuYWRkKGludElE
LCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
bmV3IElkZW50aWZpZXJSZXAoaW50SUQpOwogICAgICAgICAKLSAgICAgICAgaWRlbnRpZmllclNl
dCgpLmFkZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgIGlkZW50aWZpZXJTZXQoKS5h
ZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gcmVz
dWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwog
fQogCiB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwKj4g
U3RyaW5nSWRlbnRpZmllck1hcDsKQEAgLTkzLDE1ICs5MywxNSBAQCBJZGVudGlmaWVyUmVwKiBJ
ZGVudGlmaWVyUmVwOjpnZXQoY29uc3QgY2hhciogbmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAg
IAogICAgIFVTdHJpbmcgc3RyaW5nID0gc3RyaW5nVG9VU3RyaW5nKFN0cmluZzo6ZnJvbVVURjhX
aXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgc3RybGVuKG5hbWUpKSk7Ci0gICAgcGFpcjxTdHJpbmdJ
ZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3RyaW5nSWRlbnRpZmllck1h
cCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAg
ICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0
LT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJlcChuYW1lKTsKKyAgICBTdHJpbmdJZGVudGlmaWVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3RyaW5nSWRlbnRpZmllck1hcCgpLmFkZChzdHJpbmcu
aW1wbCgpLCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJU
KCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7CiAgICAgICAgIAotICAgICAgICBpZGVudGlm
aWVyU2V0KCkuYWRkKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICAgICAgaWRlbnRpZmllclNl
dCgpLmFkZChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgfQogICAgIAotICAgIHJldHVy
biByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQ7CiB9CiAKIGJvb2wgSWRlbnRpZmllclJlcDo6aXNWYWxpZChJZGVudGlmaWVyUmVwKiBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggMmNiZTkyM2Y1
ZDAwYTIxMmJhNjkwNGFiYmI2NDExZjk1ZTMwNTQzMS4uODM5ODZhZjU4M2M1OTA0MmYxYmY3Nzc1
MTIwN2E4MDM1M2FkMTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaE1hcDxSb290T2JqZWN0KiwgSlNU
b05QT2JqZWN0TWFwPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQocm9vdE9iamVjdCk7CiAg
ICAgICAgIGlmIChpdGVyID09IG1fbWFwLmVuZCgpKSB7CiAgICAgICAgICAgICByb290T2JqZWN0
LT5hZGRJbnZhbGlkYXRpb25DYWxsYmFjaygmbV9pbnZhbGlkYXRpb25DYWxsYmFjayk7Ci0gICAg
ICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJvb3RPYmplY3QsIEpTVG9OUE9iamVjdE1hcCgpKS5m
aXJzdDsKKyAgICAgICAgICAgIGl0ZXIgPSBtX21hcC5hZGQocm9vdE9iamVjdCwgSlNUb05QT2Jq
ZWN0TWFwKCkpLml0ZXJhdG9yOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGl0ZXItPnNl
Y29uZC5maW5kKGpzT2JqZWN0KSA9PSBpdGVyLT5zZWNvbmQuZW5kKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBiOTg5
YzFkNWE2ZWFjNzA4ODk0MzRmNTFjOTA3NjYzZmE3MzcyMmU0Li41MjE5MDk3Y2U0ZGZkNjljY2Q4
ZmJhNDcyOTk5MjgwY2RjZGQ3ZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSwgaW50IHByb3AKIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlE
KGludCBwcm9wZXJ0eUlEKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxpbnQ+
LCBwcm9wZXJ0eUlEU2V0LCAoKSk7Ci0gICAgaWYgKCFwcm9wZXJ0eUlEU2V0LmFkZChwcm9wZXJ0
eUlEKS5zZWNvbmQpCisgICAgaWYgKCFwcm9wZXJ0eUlEU2V0LmFkZChwcm9wZXJ0eUlEKS5pc05l
d0VudHJ5KQogICAgICAgICByZXR1cm47CiAKICAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5v
dCB5ZXQgaW1wbGVtZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlO
YW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBlMzY3MzVhZmI2YjE3MzQ3MTcwODY3
ZTc0ODQxN2Q3ZTNkNjcyZTRiLi5kZDkwNGQzN2ZiOTU0ZTQ0ZGJhNjUzODc2NzM1ODMxMTk4ZmFk
M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTExNCw3
ICsxMTQsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAgIHVuc2lnbmVkIGhhc2hLZXkg
PSAoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCA2IHwgZm9udERl
c2NyaXB0aW9uLndpZHRoVmFyaWFudCgpIDw8IDQKICAgICAgICAgICAgICAgICAgICAgICAgfCAo
Zm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpID09IFRleHRPcmllbnRhdGlvblVwcmln
aHQgPyA4IDogMCkgfCAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwg
PyA0IDogMCkgfCAoc3ludGhldGljQm9sZCA/IDIgOiAwKSB8IChzeW50aGV0aWNJdGFsaWMgPyAx
IDogMCk7CiAKLSAgICBTaW1wbGVGb250RGF0YSomIGNhY2hlZERhdGEgPSBtX2ZvbnREYXRhVGFi
bGUuYWRkKGhhc2hLZXksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU2ltcGxlRm9udERhdGEqJiBj
YWNoZWREYXRhID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgIGlmIChjYWNoZWREYXRhKQogICAgICAgICByZXR1cm4gY2FjaGVkRGF0YTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA2ZDIyZmRjY2QwZDU3OWQw
OGM0YTY1YzJlNmU1ZmZiYmI1YTI0ZmE1Li5lMDAyZjJmOGYwMTcwZTk4Y2E1NmQ3MWZlNWNkYjk3
YmJlYTYyYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMjg1
LDcgKzI4NSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3Qg
Q1NTRm9udEZhY2VSdWxlKiBmb250RmFjZVJ1bGUpCiAgICAgICAgIGlmIChmYW1pbHlOYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE93blB0cjxWZWN0b3I8
UmVmUHRyPENTU0ZvbnRGYWNlPiA+ID4mIGZhbWlseUZvbnRGYWNlcyA9IG1fZm9udEZhY2VzLmFk
ZChmYW1pbHlOYW1lLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgICAgICBPd25QdHI8VmVj
dG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBtX2ZvbnRGYWNl
cy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgaWYg
KCFmYW1pbHlGb250RmFjZXMpIHsKICAgICAgICAgICAgIGZhbWlseUZvbnRGYWNlcyA9IGFkb3B0
UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+KTsKIApAQCAtNDg3LDEzICs0ODcs
MTMgQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICAgICAgcmV0dXJuIGZvbnREYXRhRm9y
R2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwog
ICAgIH0KIAotICAgIE93blB0cjxIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVk
Rm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9IG1fZm9udHMuYWRkKGZhbWls
eSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SGFzaE1hcDx1bnNpZ25lZCwg
UmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUg
PSBtX2ZvbnRzLmFkZChmYW1pbHksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYg
KCFzZWdtZW50ZWRGb250RmFjZUNhY2hlKQogICAgICAgICBzZWdtZW50ZWRGb250RmFjZUNhY2hl
ID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250
RmFjZT4gPik7CiAKICAgICBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrID0gZm9udERlc2NyaXB0
aW9uLnRyYWl0c01hc2soKTsKIAotICAgIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4mIGZh
Y2UgPSBzZWdtZW50ZWRGb250RmFjZUNhY2hlLT5hZGQodHJhaXRzTWFzaywgMCkuZmlyc3QtPnNl
Y29uZDsKKyAgICBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+JiBmYWNlID0gc2VnbWVudGVk
Rm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01hc2ssIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
aWYgKCFmYWNlKSB7CiAgICAgICAgIGZhY2UgPSBDU1NTZWdtZW50ZWRGb250RmFjZTo6Y3JlYXRl
KHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApp
bmRleCBlM2Q5Yjc3MDEzMGEwMzUxMGUwOTQ2YmQ3NWY1NGMzOWM5OTcyMDI1Li5jZjllYzllMmVk
MmY5ZmVmMmJiZDk0ZmY2NWUwYWFlMzJhMzg0MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBGb250RGF0YSogQ1NT
U2VnbWVudGVkRm9udEZhY2U6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aQogICAgIEZvbnRUcmFpdHNNYXNrIGRlc2lyZWRUcmFpdHNNYXNrID0gZm9udERl
c2NyaXB0aW9uLnRyYWl0c01hc2soKTsKICAgICB1bnNpZ25lZCBoYXNoS2V5ID0gKChmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSArIDEpIDw8IChGb250VHJhaXRzTWFza1dpZHRo
ICsgMSkpIHwgKChmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbCA/IDEg
OiAwKSA8PCBGb250VHJhaXRzTWFza1dpZHRoKSB8IGRlc2lyZWRUcmFpdHNNYXNrOwogCi0gICAg
U2VnbWVudGVkRm9udERhdGEqJiBmb250RGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtl
eSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBTZWdtZW50ZWRGb250RGF0YSomIGZvbnREYXRhID0g
bV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlm
IChmb250RGF0YSkKICAgICAgICAgcmV0dXJuIGZvbnREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IDMxYTg3YWYwYzNiMzRmOGU2NmY3
NDhmYTExNmZkYjE3ZTQ1NDdkMzEuLjA0MWQ2YzgyNDUyM2QyZjI5YjU2MmZiMWMyNDRmNTI0MGMw
NmMxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVy
dHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3Bw
CkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgQ291bnRlckRp
cmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IHBh
cmVudE1hcC5lbmQoKTsKICAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmVudE1hcC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBk
aXJlY3RpdmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0
LT5zZWNvbmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1h
cC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+c2Vjb25kOwog
ICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgewogICAgICAgICAgICAg
ICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IGl0LT5zZWNvbmQubV9yZXNldDsKICAgICAgICAgICAg
ICAgICBkaXJlY3RpdmVzLm1fcmVzZXRWYWx1ZSA9IGl0LT5zZWNvbmQubV9yZXNldFZhbHVlOwpA
QCAtMTA1Miw3ICsxMDUyLDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICBBdG9taWNTdHJpbmcg
aWRlbnRpZmllciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3Qo
KSktPmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBpbnQgdmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhaXItPnNlY29uZCgpKS0+Z2V0SW50VmFsdWUoKTsKLSAg
ICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpZGVudGlm
aWVyLmltcGwoKSwgQ291bnRlckRpcmVjdGl2ZXMoKSkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAg
ICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpZGVudGlmaWVyLmlt
cGwoKSwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgICAg
IGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpIHsKICAgICAgICAgICAgICAgICBkaXJlY3Rp
dmVzLm1fcmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZh
bHVlID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
ZWMyZjk3MjA2NTJiYzM4MDhhYjVhMGEyMDZjNWQ4YjA1ZGUxZjM4Ni4uZTUyMmEzY2NiOTIwZDE5
NmI4MjFlZTUxZjkyYmU3NjMxYWFkNjRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtNDk2LDEwICs0OTYsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
cHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFIK
ICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBz
Y29wZSA9IGRldGVybWluZVNjb3BlKGNzc1NoZWV0KTsKICAgICAgICAgaWYgKHNjb3BlKSB7Ci0g
ICAgICAgICAgICBwYWlyPFNjb3BlZFJ1bGVTZXRNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1
bHQgPSBtX3Njb3BlZEF1dGhvclN0eWxlcy5hZGQoc2NvcGUsIG51bGxwdHIpOwotICAgICAgICAg
ICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgYWRkUmVzdWx0LmZpcnN0
LT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgpKTsKLSAgICAgICAgICAgIGFkZFJlc3Vs
dC5maXJzdC0+c2Vjb25kLT5hZGRSdWxlc0Zyb21TaGVldChjc3NTaGVldCwgKm1fbWVkaXVtLCB0
aGlzLCBzY29wZSk7CisgICAgICAgICAgICBTY29wZWRSdWxlU2V0TWFwOjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0KCkpOworICAgICAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPmFkZFJ1bGVzRnJvbVNoZWV0KGNzc1NoZWV0
LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAjZW5kaWYKQEAgLTIzODAsNyArMjM4MCw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxl
U2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURh
CiB7CiAgICAgaWYgKCFrZXkpCiAgICAgICAgIHJldHVybjsKLSAgICBPd25QdHI8VmVjdG9yPFJ1
bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOwor
ICAgIE93blB0cjxWZWN0b3I8UnVsZURhdGE+ID4mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxw
dHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFydWxlcykKICAgICAgICAgcnVsZXMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFJ1bGVEYXRhPik7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmluZGV4IGM0NmM3MDQ3YzUwMGU0YjI4
M2YzZDdlYzU4NGJkOWI4ZTkzNDZlZWEuLjA1YmE1NDk1MDJhZmI4NzY3N2YyNTMxMmJmMTNhYjY0
OTc2OWE0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC01NSwxMCArNTUs
MTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoaW50IGlkZW50KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8SWRlbnRpZmllclZhbHVlQ2FjaGU6Oml0ZXJhdG9y
LCBib29sPiBlbnRyeSA9IG1faWRlbnRpZmllclZhbHVlQ2FjaGUuYWRkKGlkZW50LCBkdW1teVZh
bHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25k
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwotICAgIHJldHVy
biBlbnRyeS5maXJzdC0+c2Vjb25kOworICAgIElkZW50aWZpZXJWYWx1ZUNhY2hlOjpBZGRSZXN1
bHQgZW50cnkgPSBtX2lkZW50aWZpZXJWYWx1ZUNhY2hlLmFkZChpZGVudCwgZHVtbXlWYWx1ZSk7
CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNv
bmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7CisgICAgcmV0
dXJuIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSkK
QEAgLTc4LDEwICs3OCwxMCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1
ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCiAgICAgICAgIG1fY29s
b3JWYWx1ZUNhY2hlLmNsZWFyKCk7CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGR1
bW15VmFsdWU7Ci0gICAgcGFpcjxDb2xvclZhbHVlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiBlbnRy
eSA9IG1fY29sb3JWYWx1ZUNhY2hlLmFkZChyZ2JWYWx1ZSwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYg
KGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5z
ZWNvbmQ7CisgICAgQ29sb3JWYWx1ZUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBtX2NvbG9yVmFs
dWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1bW15VmFsdWUpOworICAgIGlmIChlbnRyeS5pc05ld0Vu
dHJ5KQorICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNlY29u
ZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVh
dGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkK
QEAgLTExNywxNSArMTE3LDE1IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpCiAgICAgfQogCiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8SW50ZWdl
clZhbHVlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFsdWUs
IGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0
LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKLSAgICBy
ZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJbnRlZ2VyVmFsdWVDYWNoZTo6QWRkUmVz
dWx0IGVudHJ5ID0gY2FjaGUtPmFkZChpbnRWYWx1ZSwgZHVtbXlWYWx1ZSk7CisgICAgaWYgKGVu
dHJ5LmlzTmV3RW50cnkpCisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0
b3ItPnNlY29uZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQ
b29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQogewot
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVD
YWNoZS5hZGQoZmFtaWx5TmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+JiB2YWx1ZSA9IG1fZm9udEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5h
bWUsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgdmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZhbWlseU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKTsKICAgICByZXR1cm4gdmFsdWU7CkBAIC0xMzgsNyArMTM4LDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhY2VWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIHMKICAgICBpZiAobV9mb250RmFjZVZhbHVlQ2FjaGUuc2l6ZSgp
ID4gbWF4aW11bUZvbnRGYWNlQ2FjaGVTaXplKQogICAgICAgICBtX2ZvbnRGYWNlVmFsdWVDYWNo
ZS5jbGVhcigpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4mIHZhbHVlID0gbV9mb250RmFj
ZVZhbHVlQ2FjaGUuYWRkKHN0cmluZywgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiYgdmFsdWUgPSBtX2ZvbnRGYWNlVmFsdWVDYWNoZS5hZGQoc3RyaW5nLCAwKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUGFy
c2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUoc3RyaW5nLCBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAg
cmV0dXJuIHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRp
b0J1dHRvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3Bw
CmluZGV4IDQ3MGRhMmFkNWM3M2IxNzkyYWU2MjNkOTQ4MjY4YjhkNjU1ZTZjNTguLmU2NzIzMjlh
ZjhkZTM3OGJlZmRmYzE0ZjhhY2JkMGYyZWMwYzc0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSYWRpb0J1dHRv
bkdyb3VwOjpzZXRDaGVja2VkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHZvaWQg
UmFkaW9CdXR0b25Hcm91cDo6YWRkKEhUTUxJbnB1dEVsZW1lbnQqIGJ1dHRvbikKIHsKICAgICBB
U1NFUlQoYnV0dG9uLT5pc1JhZGlvQnV0dG9uKCkpOwotICAgIGlmICghbV9tZW1iZXJzLmFkZChi
dXR0b24pLnNlY29uZCkKKyAgICBpZiAoIW1fbWVtYmVycy5hZGQoYnV0dG9uKS5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCBncm91cFdhc1ZhbGlkID0gaXNWYWxpZCgpOwog
ICAgIGlmIChidXR0b24tPnJlcXVpcmVkKCkpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDaGVj
a2VkUmFkaW9CdXR0b25zOjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAg
ICBpZiAoIW1fbmFtZVRvR3JvdXBNYXApCiAgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBhZG9w
dFB0cihuZXcgTmFtZVRvR3JvdXBNYXApOwogCi0gICAgT3duUHRyPFJhZGlvQnV0dG9uR3JvdXA+
JiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50LT5uYW1lKCkuaW1wbCgpLCBQ
YXNzT3duUHRyPFJhZGlvQnV0dG9uR3JvdXA+KCkpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRy
PFJhZGlvQnV0dG9uR3JvdXA+JiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50
LT5uYW1lKCkuaW1wbCgpLCBQYXNzT3duUHRyPFJhZGlvQnV0dG9uR3JvdXA+KCkpLml0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgaWYgKCFncm91cCkKICAgICAgICAgZ3JvdXAgPSBSYWRpb0J1dHRvbkdy
b3VwOjpjcmVhdGUoKTsKICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IGNiYWFhNGVmZWMwMTdiMzYy
MmI2ODQ5NGNkZTRmMTkzMWNjYWJkOGYuLmM1Y2IzYWQ5ZjZlYWI3OGQ4OWU1ZDY3ZWE5YzQzNTIz
MjI5N2UwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlv
blNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZS5jcHAKQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11
dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjp3aWxsUmVtb3ZlQ2hpbGQoTm9kZSogdAogCiB2b2lk
IENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjppbmNy
ZW1lbnRTY29waW5nTGV2ZWwoTm9kZSogdGFyZ2V0KQogewotICAgIHBhaXI8U2NvcGluZ0xldmVs
TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0YXJnZXQs
IDEpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICArKyhyZXN1bHQuZmlyc3Qt
PnNlY29uZCk7CisgICAgU2NvcGluZ0xldmVsTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zY29w
aW5nTGV2ZWxzLmFkZCh0YXJnZXQsIDEpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsK
KyAgICAgICAgKysocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTQyNGY3ODdhZmIzMThmZTRmMzFl
MjAxYTRiYzBmN2ZkZjRhOTgzLi4wN2QwMGY3NzQ0MWY1NmIwZjEyYTdkOWM2NjlkNDJjOWMxNWNi
ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ1MjEsNyArNDUyMSw3IEBAIEhUTUxB
bGxDb2xsZWN0aW9uKiBEb2N1bWVudDo6YWxsKCkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50
Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25Q
dHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fd2luZG93TmFtZWRJdGVtQ29s
bGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93
blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+JiBjb2xsZWN0aW9uID0gbV93aW5kb3dOYW1lZEl0ZW1D
b2xsZWN0aW9ucy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFjb2xsZWN0aW9uKQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0
aW9uOjpjcmVhdGUodGhpcywgV2luZG93TmFtZWRJdGVtcywgbmFtZSk7CiAgICAgcmV0dXJuIGNv
bGxlY3Rpb24uZ2V0KCk7CkBAIC00NTI5LDcgKzQ1MjksNyBAQCBIVE1MQ29sbGVjdGlvbiogRG9j
dW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogCiBIVE1M
Q29sbGVjdGlvbiogRG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCiB7Ci0gICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24g
PSBtX2RvY3VtZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRy
KS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+JiBjb2xsZWN0
aW9uID0gbV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVs
bHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWNvbGxlY3Rpb24pCiAgICAgICAgIGNv
bGxlY3Rpb24gPSBIVE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBEb2N1bWVudE5hbWVk
SXRlbXMsIG5hbWUpOwogICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpOwpAQCAtNDkyMiw3ICs0
OTIyLDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogRG9jdW1lbnQ6OmdldENTU0NhbnZhc0Nv
bnRleHQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdAogCiBIVE1MQ2FudmFzRWxlbWVudCogRG9j
dW1lbnQ6OmdldENTU0NhbnZhc0VsZW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFJl
ZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGVsZW1lbnQgPSBtX2Nzc0NhbnZhc0VsZW1lbnRzLmFk
ZChuYW1lLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4m
IGVsZW1lbnQgPSBtX2Nzc0NhbnZhc0VsZW1lbnRzLmFkZChuYW1lLCAwKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgZWxlbWVudCA9IEhUTUxDYW52YXNFbGVt
ZW50OjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CkBAIC01NzI1LDEy
ICs1NzI1LDEyIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRJdGVtcyhjb25z
dCBTdHJpbmcmIHR5cGVOYW1lcykKICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBjcmVh
dGUgYW4gdW5pcXVlIHN0cmluZyBpZGVudGlmaWVyIHRvIG1hcCBzdWNoIHJlcXVlc3QgaW4gdGhl
IGNhY2hlLgogICAgIFN0cmluZyBsb2NhbFR5cGVOYW1lcyA9IHR5cGVOYW1lcy5pc051bGwoKSA/
IFN0cmluZygiaHR0cDovL3dlYmtpdC5vcmcvbWljcm9kYXRhL3VuZGVmaW5lZEl0ZW1UeXBlIikg
OiB0eXBlTmFtZXM7CiAKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpNaWNyb0RhdGFJdGVt
TGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbm9kZUxpc3RzLT5tX21pY3JvRGF0
YUl0ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuZmlyc3Qt
PnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6Ok1pY3JvRGF0YUl0ZW1MaXN0Q2FjaGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBub2RlTGlzdHMtPm1fbWljcm9EYXRhSXRlbUxpc3RDYWNoZS5h
ZGQobG9jYWxUeXBlTmFtZXMsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAg
ICAgIHJldHVybiBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7
CiAKICAgICBSZWZQdHI8TWljcm9EYXRhSXRlbUxpc3Q+IGxpc3QgPSBNaWNyb0RhdGFJdGVtTGlz
dDo6Y3JlYXRlKHRoaXMsIHR5cGVOYW1lcyk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBs
aXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RXZlbnRRdWV1ZS5jcHAKaW5kZXggNWI4OTliM2Y1NzhhMjc0Mzk4MjQ4NTk4YjlkMjlhZDk4OGYw
MDM2ZS4uNTQ5NDA4MjUyOGIyOTMzNWUwYzUzNzdlNzBiMzRkNzRkNTUyMjVlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9v
bCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSk7
Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZChldmVudCkuc2Vjb25kOwor
ICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZlbnQpLmlzTmV3RW50cnk7
CiAgICAgQVNTRVJUX1VOVVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJdCBzaG91bGQgbm90
IGhhdmUgYWxyZWFkeSBiZWVuIGluIHRoZSBsaXN0LgogICAgIAogICAgIGlmICghbV9wZW5kaW5n
RXZlbnRUaW1lci0+aXNBY3RpdmUoKSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIERvY3VtZW50
RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChQYXNzUmVmUHRyPE5vZGU+
IHRhcmdldCwgUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX25vZGVzV2l0
aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0LmdldCgpKS5zZWNvbmQpCisgICAgaWYgKCFt
X25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQodGFyZ2V0LmdldCgpKS5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm47CiAKICAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0KHRhcmdldCk7
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OnBlbmRpbmdFdmVu
dFRpbWVyRmlyZWQoKQogCiAgICAgLy8gSW5zZXJ0IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBzaG91
bGQgc3RvcC4KICAgICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKDApKTsKLSAgICBi
b29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLnNlY29uZDsKKyAgICBib29sIHdh
c0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKDApLmlzTmV3RW50cnk7CiAgICAgQVNTRVJUX1VO
VVNFRCh3YXNBZGRlZCwgd2FzQWRkZWQpOyAvLyBJdCBzaG91bGQgbm90IGhhdmUgYWxyZWFkeSBi
ZWVuIGluIHRoZSBsaXN0LgogCiAgICAgUmVmUHRyPERvY3VtZW50RXZlbnRRdWV1ZT4gcHJvdGVj
dG9yKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJl
ZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAppbmRl
eCBiY2IyM2I0OTYyZjY0NjZiYjYxYjhhZWJhZmE0MDVmZWU4OGU5MzAzLi4wODJhYTA3NDBhNzFj
Y2RmNTBlMWQ0MmQyM2QzMTdlNjNhZjJmNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRPcmRlcmVkTWFwLmNwcApAQCAtNjksMTQgKzY5LDE0IEBAIHZvaWQgRG9jdW1lbnRPcmRlcmVk
TWFwOjphZGQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQogICAgIGlm
ICghbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoa2V5KSkgewogICAgICAgICAvLyBGYXN0IHBh
dGguIFRoZSBrZXkgaXMgbm90IGFscmVhZHkgaW4gbV9kdXBsaWNhdGVDb3VudHMsIHNvIHdlIGFz
c3VtZSB0aGF0IGl0J3MKICAgICAgICAgLy8gYWxzbyBub3QgYWxyZWFkeSBpbiBtX21hcCBhbmQg
dHJ5IHRvIGFkZCBpdC4gSWYgdGhhdCBhZGQgc3VjY2VlZHMsIHdlJ3JlIGRvbmUuCi0gICAgICAg
IHBhaXI8TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgZWxl
bWVudCk7Ci0gICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQorICAgICAgICBNYXA6OkFkZFJl
c3VsdCBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBlbGVtZW50KTsKKyAgICAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFRo
ZSBhZGQgZmFpbGVkLCBzbyB0aGlzIGtleSB3YXMgYWxyZWFkeSBjYWNoZWQgaW4gbV9tYXAuCiAg
ICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1v
dmUgdGhlIG1fbWFwCiAgICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIGtleSBzbyBnZXQgc2VhcmNo
ZXMgZm9yIGl0IG5leHQgdGltZSBpdCBpcyBjYWxsZWQuCi0gICAgICAgIG1fbWFwLnJlbW92ZShh
ZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9y
KTsKICAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJlbW92
ZSB0aGUgbV9tYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAppbmRleCA3
NzRlNjY1NzRhNmJjYzFkZWNmYTk2Njk2M2RiYTk2MGFhOTljNDQ5Li5jMWZkNGQ3Yzk1N2E2NGJm
Zjc4OGY5MDFlNjFkZTAxY2EwOTIyNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuY3BwCkBAIC0xMzQsMTEgKzEzNCwxMSBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFk
ZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rlbgog
ICAgIH0KIAogICAgIGlmIChtX2hhc2hNYXApIHsKLSAgICAgICAgcGFpcjxFdmVudExpc3RlbmVy
SGFzaE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faGFzaE1hcC0+YWRkKGV2ZW50VHlw
ZSwgbnVsbHB0cik7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgRXZlbnRMaXN0ZW5lclZlY3Rvcik7Cisg
ICAgICAgIEV2ZW50TGlzdGVuZXJIYXNoTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9oYXNoTWFw
LT5hZGQoZXZlbnRUeXBlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQorICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgRXZl
bnRMaXN0ZW5lclZlY3Rvcik7CiAKLSAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3Io
cmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAg
ICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0
KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBpZiAoIW1fc2luZ2xlRXZl
bnRMaXN0ZW5lclZlY3RvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDQ4MGU1YmI3ZjRlYmY3MDkw
MWVlMTI4ZDA3Yzg1NzA1MGQ4NDA0NzQuLjMzNmUxYmY3YWIyNGYzZDQ4ODBiYTE1NzZkZmRmMjM3
ZWJjYTIxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE4NSw5ICsxODUsOSBAQCB2b2lkIE5vZGU6
OmR1bXBTdGF0aXN0aWNzKCkKIAogICAgICAgICAgICAgICAgIC8vIFRhZyBzdGF0cwogICAgICAg
ICAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7
Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNoTWFwPFN0cmluZywgc2l6ZV90Pjo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IHBlclRhZ0NvdW50LmFkZChlbGVtZW50LT50YWdOYW1lKCksIDEpOwot
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQrKzsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywg
c2l6ZV90Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IHBlclRhZ0NvdW50LmFkZChlbGVtZW50LT50YWdO
YW1lKCksIDEpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKys7CiAKICAgICAgICAgICAg
ICAgICBpZiAoRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbGVtZW50LT5h
dHRyaWJ1dGVEYXRhKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyArPSBhdHRy
aWJ1dGVEYXRhLT5sZW5ndGgoKTsKQEAgLTE2MTIsMTIgKzE2MTIsMTIgQEAgUGFzc1JlZlB0cjxO
b2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpCiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRvbSA9IG5hbWU7CiAKLSAg
ICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX3Rh
Z05vZGVMaXN0Q2FjaGUuYWRkKGxvY2FsTmFtZUF0b20sIDApOwotICAgIGlmICghcmVzdWx0LnNl
Y29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6QWRk
UmVzdWx0IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+
bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPFRhZ05vZGVMaXN0PiBsaXN0ID0g
VGFnTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBzdGFyQXRvbSwgbG9jYWxOYW1lQXRvbSk7Ci0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7ICAgCiB9CiAK
QEAgLTE2MzUsMzYgKzE2MzUsMzYgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxl
bWVudHNCeVRhZ05hbWVOUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVUKIAogICAgIEF0
b21pY1N0cmluZyBsb2NhbE5hbWVBdG9tID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9k
ZURhdGE6OlRhZ05vZGVMaXN0Q2FjaGVOUzo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdAorICAgIE5v
ZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlTlM6OkFkZFJlc3VsdCByZXN1bHQKICAg
ICAgICAgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9k
ZUxpc3RDYWNoZU5TLmFkZChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWVBdG9tLCBu
YW1lc3BhY2VVUkkpLmltcGwoKSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAg
ICByZXR1cm4gUGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwor
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRh
Z05vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8VGFnTm9k
ZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIG5hbWVzcGFjZVVSSS5pc0Vt
cHR5KCkgPyBudWxsQXRvbSA6IG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lQXRvbSk7Ci0gICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYgZWxl
bWVudE5hbWUpCiB7Ci0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2Fj
aGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2Rl
TGlzdHModGhpcyktPm1fbmFtZU5vZGVMaXN0Q2FjaGUuYWRkKGVsZW1lbnROYW1lLCAwKTsKLSAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPE5vZGVMaXN0
PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6Ok5hbWVOb2Rl
TGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9k
ZUxpc3RzKHRoaXMpLT5tX25hbWVOb2RlTGlzdENhY2hlLmFkZChlbGVtZW50TmFtZSwgMCk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxOYW1lTm9kZUxp
c3Q+IGxpc3QgPSBOYW1lTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBlbGVtZW50TmFtZSk7Ci0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0LmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3Ry
aW5nJiBjbGFzc05hbWVzKQogewotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OkNsYXNzTm9k
ZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdAorICAgIE5vZGVMaXN0c05vZGVEYXRh
OjpDbGFzc05vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQKICAgICAgICAgPSBlbnN1cmVS
YXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fY2xhc3NOb2RlTGlzdENhY2hlLmFk
ZChjbGFzc05hbWVzLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxDbGFzc05vZGVMaXN0PiBsaXN0
ID0gQ2xhc3NOb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIGNsYXNzTmFtZXMpOwotICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCkBAIC0yNTkxLDkg
KzI1OTEsOSBAQCB2b2lkIE5vZGU6OmNvbGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9u
KEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosCiAgICAgICAgICAgICBNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSByZWdpc3RyeS0+YXQoaSkuZ2V0KCk7
CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRSZWNlaXZlTXV0YXRpb25Gcm9t
KHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgTXV0YXRpb25S
ZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxp
dmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hNYXA8V2ViS2l0TXV0YXRp
b25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxp
dmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwor
ICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG9ic2VydmVycy5hZGQo
cmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOworICAgICAgICAgICAg
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKIAogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yNjA0LDkgKzI2MDQsOSBAQCB2b2lkIE5vZGU6OmNvbGxlY3RNYXRjaGluZ09i
c2VydmVyc0Zvck11dGF0aW9uKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosCiAgICAg
ICAgICAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSAqaXRl
cjsKICAgICAgICAgICAgIGlmIChyZWdpc3RyYXRpb24tPnNob3VsZFJlY2VpdmVNdXRhdGlvbkZy
b20odGhpcywgdHlwZSwgYXR0cmlidXRlTmFtZSkpIHsKICAgICAgICAgICAgICAgICBNdXRhdGlv
blJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9wdGlvbnMgPSByZWdpc3RyYXRpb24tPmRl
bGl2ZXJ5T3B0aW9ucygpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+OjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRl
bGl2ZXJ5T3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7
CisgICAgICAgICAgICAgICAgSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRp
b25SZWNvcmREZWxpdmVyeU9wdGlvbnM+OjpBZGRSZXN1bHQgcmVzdWx0ID0gb2JzZXJ2ZXJzLmFk
ZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0aW9ucyk7CisgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGE3NDI2
Mjk1ZWYwNjRlYmU5YzBmYWRlZjBmNjcwMWQ1MTY1OGRhM2UuLmUwODU1MDcwYTdjYjMyNTM0Y2Ni
ZjhhYjhkMDUyNjY3ZGEzMTlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAK
QEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBRdWFsaWZpZWROYW1lOjppbml0KGNvbnN0IEF0b21pY1N0
cmluZyYgcCwgY29uc3QgQXRvbWljU3RyaW5nJiBsLCBjb25zdCBBdG8KICAgICBpZiAoIWdOYW1l
Q2FjaGUpCiAgICAgICAgIGdOYW1lQ2FjaGUgPSBuZXcgUU5hbWVTZXQ7CiAgICAgUXVhbGlmaWVk
TmFtZUNvbXBvbmVudHMgY29tcG9uZW50cyA9IHsgcC5pbXBsKCksIGwuaW1wbCgpLCBuLmlzRW1w
dHkoKSA/IG51bGxBdG9tLmltcGwoKSA6IG4uaW1wbCgpIH07Ci0gICAgcGFpcjxRTmFtZVNldDo6
aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGdOYW1lQ2FjaGUtPmFkZDxRdWFsaWZpZWROYW1l
Q29tcG9uZW50cywgUU5hbWVDb21wb25lbnRzVHJhbnNsYXRvcj4oY29tcG9uZW50cyk7Ci0gICAg
bV9pbXBsID0gKmFkZFJlc3VsdC5maXJzdDsgICAgCi0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25k
KQorICAgIFFOYW1lU2V0OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gZ05hbWVDYWNoZS0+YWRkPFF1
YWxpZmllZE5hbWVDb21wb25lbnRzLCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yPihjb21wb25l
bnRzKTsKKyAgICBtX2ltcGwgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yOworICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgIG1faW1wbC0+cmVmKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAppbmRleCAwMzVjNGEyMWE3MmM5Y2Q4NDBlMGIyOTYy
Y2U2OTc2YWQ4NTZiY2JlLi45Y2NlN2Q5NWI1ZTEwNDQzYzAzZWRhNWI3MmYxMTJjNTcwNTJlNTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCkBAIC0xNTAsNyArMTUw
LDcgQEAgU3BhY2VTcGxpdFN0cmluZ0RhdGE6On5TcGFjZVNwbGl0U3RyaW5nRGF0YSgpCiAKIFBh
c3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVh
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgU3BhY2VTcGxpdFN0cmluZ0Rh
dGEqJiBkYXRhID0gc2hhcmVkRGF0YU1hcCgpLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7
CisgICAgU3BhY2VTcGxpdFN0cmluZ0RhdGEqJiBkYXRhID0gc2hhcmVkRGF0YU1hcCgpLmFkZChz
dHJpbmcsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIGRh
dGEgPSBuZXcgU3BhY2VTcGxpdFN0cmluZ0RhdGEoc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDU3NjFm
NTA2ZTkwMTA5MTczNjQ2YzFjOTM3YzUxMDc2M2IxYWMyNjMuLjIyOGFhODZlMzVhYTYzMTM4ODA4
ZjkwZWNjOTY5YzI2ZGFjYzQwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0
eWxlKCkKIAogICAgIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlOjppdGVyYXRvciBjYWNoZUl0
ZXJhdG9yOwogICAgIGlmIChjYWNoZUhhc2gpIHsKLSAgICAgICAgY2FjaGVJdGVyYXRvciA9IHBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuYWRkKGNhY2hlSGFzaCwgbnVsbHB0cikuZmlyc3Q7
CisgICAgICAgIGNhY2hlSXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFk
ZChjYWNoZUhhc2gsIG51bGxwdHIpLml0ZXJhdG9yOwogICAgICAgICBpZiAoY2FjaGVJdGVyYXRv
ci0+c2Vjb25kICYmIGNhY2hlSXRlcmF0b3ItPnNlY29uZC0+a2V5ICE9IGNhY2hlS2V5KQogICAg
ICAgICAgICAgY2FjaGVIYXNoID0gMDsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAKaW5kZXggZDExZmVlMTIxODE1YzdjZmM3Yzk5ZDAxY2U1NDU1ODdiZTNj
YjFiNi4uYzNhNzE1M2NhZTQ1YWQ2MDFhODVjODUwOTllM2YxNTE4OTk3MjdjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBIVE1MQ29sbGVjdGlvbjo6dGFncyhjb25zdCBTdHJpbmcmIG5hbWUpCiAK
IHZvaWQgSFRNTENvbGxlY3Rpb246OmFwcGVuZChOb2RlQ2FjaGVNYXAmIG1hcCwgY29uc3QgQXRv
bWljU3RyaW5nJiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxF
bGVtZW50Kj4gPiYgdmVjdG9yID0gbWFwLmFkZChrZXkuaW1wbCgpLCBudWxscHRyKS5maXJzdC0+
c2Vjb25kOworICAgIE93blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1hcC5hZGQo
a2V5LmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZlY3RvcikK
ICAgICAgICAgdmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxFbGVtZW50Kj4pOwogICAgIHZl
Y3Rvci0+YXBwZW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcAppbmRleCAyNWRjYTMzY2U3MDQ4OGRiNWE4M2NkOWY5M2VkNWNkMWZhOGE5
ZDY3Li5kN2ZjYjlhYWMwOGU4ODUzNjg2Y2ZkZGI1MWZhMWUxMGQyOTk0OWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtMjMzLDEyICsyMzMs
MTIgQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+
JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHQKICAgICBEaWZmVGFibGUgb2xkVGFibGU7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0xpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3No
YTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0OworICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9y
IGl0ID0gbmV3VGFibGUuYWRkKG5ld0xpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNpemVfdD4oKSku
aXRlcmF0b3I7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwogICAgIH0KIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2xkTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBEaWZm
VGFibGU6Oml0ZXJhdG9yIGl0ID0gb2xkVGFibGUuYWRkKG9sZExpc3RbaV0tPm1fc2hhMSwgVmVj
dG9yPHNpemVfdD4oKSkuZmlyc3Q7CisgICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBv
bGRUYWJsZS5hZGQob2xkTGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5pdGVyYXRv
cjsKICAgICAgICAgaXQtPnNlY29uZC5hcHBlbmQoaSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBkY2E4MWNhY2FjNmIz
ODdkZWVhNmY5Mzk3YzBhY2VlMjQyZjYwNjY5Li4wNjRiODYyYzkwYjc1NWU5ZjgzYjJhMGY3Y2E4
MWU0MWYxNTQxODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKQEAgLTE4MSwxMiArMTgxLDEyIEBAIGlubGluZSB2b2lkIFNlbGVjdG9yUHJv
ZmlsZTo6Y29tbWl0U2VsZWN0b3IoYm9vbCBtYXRjaGVkKQogICAgIGRvdWJsZSBtYXRjaFRpbWVN
cyA9IFdURjo6Y3VycmVudFRpbWVNUygpIC0gbV9jdXJyZW50TWF0Y2hEYXRhLnN0YXJ0VGltZTsK
ICAgICBtX3RvdGFsTWF0Y2hpbmdUaW1lTXMgKz0gbWF0Y2hUaW1lTXM7CiAKLSAgICBwYWlyPFJ1
bGVNYXRjaGluZ1N0YXRzTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9ydWxlTWF0Y2hp
bmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJlbnRNYXRjaERh
dGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKLSAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpIHsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQudG90YWxUaW1lICs9IG1hdGNo
VGltZU1zOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5oaXRzICs9IDE7CisgICAgUnVs
ZU1hdGNoaW5nU3RhdHNNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0YXRz
LmFkZChtYWtlS2V5KCksIFJ1bGVNYXRjaGluZ1N0YXRzKG1fY3VycmVudE1hdGNoRGF0YSwgbWF0
Y2hUaW1lTXMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQudG90YWxUaW1lICs9IG1hdGNo
VGltZU1zOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5oaXRzICs9IDE7CiAgICAg
ICAgIGlmIChtYXRjaGVkKQotICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQubWF0Y2hl
cyArPSAxOworICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQubWF0Y2hlcyArPSAx
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggYjM1MmJkOGE3MTVlMWUxOTEyYzg5MGNlZmRjOGI0MDY0ZGUyN2Y0NC4u
MGVjZmQwOTczOTgwM2E5Y2U1MTg2ZTQwZTM3NDBlMjBjMzg3MmVkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC04ODEsNyArODgxLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW0KICAgICB9CiAKICAgICAqc2VhcmNoSWQgPSBJZGVu
dGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKLSAgICBTZWFyY2hSZXN1bHRzOjpp
dGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJZCwgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+KCkpLmZpcnN0OworICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIHJl
c3VsdHNJdCA9IG1fc2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElkLCBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4oKSkuaXRlcmF0b3I7CiAKICAgICBmb3IgKExpc3RIYXNoU2V0PE5vZGUqPjo6aXRlcmF0
b3IgaXQgPSByZXN1bHRDb2xsZWN0b3IuYmVnaW4oKTsgaXQgIT0gcmVzdWx0Q29sbGVjdG9yLmVu
ZCgpOyArK2l0KQogICAgICAgICByZXN1bHRzSXQtPnNlY29uZC5hcHBlbmQoKml0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBmMmFhYjRiN2Y0ZjU3MWVjZmVkZDkzMjhhMDQ3ODE1OTBkN2FjYmE5Li45MjRiZTM4NDI5
Zjc0MDk2MjNiMjY3NzkyYmFkMDQ1NjMzZGM4OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMzLDcg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWsKIAogICAgIEJyZWFrcG9pbnRJZFRvRGVidWdTZXJ2
ZXJCcmVha3BvaW50SWRzTWFwOjppdGVyYXRvciBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVy
YXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuZmluZChicmVh
a3BvaW50SWQpOwogICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9PSBt
X2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmVuZCgpKQotICAgICAgICBk
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFrcG9pbnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuZmly
c3Q7CisgICAgICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID0gbV9icmVha3Bv
aW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5zZXQoYnJlYWtwb2ludElkLCBWZWN0b3I8
U3RyaW5nPigpKS5pdGVyYXRvcjsKICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRv
ci0+c2Vjb25kLmFwcGVuZChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZCk7CiAKICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oCmluZGV4IGIzZjYxNzE5M2JmNDQ5YjJlNjNlOWYzMmI1YTczMGRiNjBk
ODI0MjYuLmM5MWFkODJlNjViZGMwZjFmOWZlMTc3NDYzMDVjOWEzZGZlYjllOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTI4MiwyMSArMjgyLDIx
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZh
bHVlKS5zZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkp
CiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JPYmplY3Q6OnNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEu
c2V0KG5hbWUsIHZhbHVlKS5zZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUp
LmlzTmV3RW50cnkpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCiBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBp
ZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5h
bWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAppbmRleCBlNjIyOWM0NGQ1NDYwMGNmNTRhNmNiNTRjYTM2YmEzODIx
ZWRlMjA2Li40ZTQyOTM4YmI1ZDU3ZDYxMmJkZjM1MGNmMTkzNDA0MDI0Mjc5YWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcApAQCAtMTA2MiwxMCArMTA2MiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6YWRkRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIHR5cGUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgcGFpcjxFbnRyeU1hcDo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1fcGVuZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7CisgICAgRW50cnlNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUpOwogICAg
IAotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQg
fD0gdHlwZTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCB8PSB0eXBlOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
QXBwbGljYXRpb25DYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAxNmE3Y2Nm
MmQzNWY2NGVkNGIwZTU3MzIxMGEzNjc1ODM1NzQ0ZGYxLi41ZDEwM2IyZmY3YjRjYmE1NGUwMzdi
YTZjODc5NjIzMDRkMDVlZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEzNCwxMSArMTM0
LDExIEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZp
bmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSCiB7CiAgICAgQVNTRVJUKCFtYW5pZmVzdFVS
TC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAKLSAgICBzdGQ6OnBhaXI8Q2FjaGVHcm91cE1h
cDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0
VVJMLCAwKTsKKyAgICBDYWNoZUdyb3VwTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZXNJ
bk1lbW9yeS5hZGQobWFuaWZlc3RVUkwsIDApOwogICAgIAotICAgIGlmICghcmVzdWx0LnNlY29u
ZCkgewotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXR1
cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewor
ICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXR1cm4g
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgLy8gTG9vayB1cCB0aGUgZ3Jv
dXAgaW4gdGhlIGRhdGFiYXNlCkBAIC0xNTAsNyArMTUwLDcgQEAgQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25z
dCBLVVIKICAgICAgICAgbV9jYWNoZUhvc3RTZXQuYWRkKHVybEhvc3RIYXNoKG1hbmlmZXN0VVJM
KSk7CiAgICAgfQogICAgIAotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gZ3JvdXA7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBncm91cDsKICAgICAKICAgICByZXR1cm4gZ3JvdXA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTcxZTg1MTU0NmZjMjBh
Yjg3Y2E3NzIwNTU2MTc0ZmM2NjYyZWU3Yy4uMjkzNjRjZDQxM2ZhZGY5NDlkY2U1MGQ1NjJkOWMz
OTg4NGEzN2QwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzUxNiw3
ICszNTE2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgLy8gRW5zdXJlIHRoaXMgdGFyZ2V0J3Mg
dG91Y2ggbGlzdCBleGlzdHMsIGV2ZW4gaWYgaXQgZW5kcyB1cCBlbXB0eSwgc28gaXQgY2FuIGFs
d2F5cyBiZSBwYXNzZWQgdG8gVG91Y2hFdmVudDo6Q3JlYXRlIGJlbG93LgogICAgICAgICBUYXJn
ZXRUb3VjaGVzTWFwOjppdGVyYXRvciB0YXJnZXRUb3VjaGVzSXRlcmF0b3IgPSB0b3VjaGVzQnlU
YXJnZXQuZmluZCh0b3VjaFRhcmdldC5nZXQoKSk7CiAgICAgICAgIGlmICh0YXJnZXRUb3VjaGVz
SXRlcmF0b3IgPT0gdG91Y2hlc0J5VGFyZ2V0LmVuZCgpKQotICAgICAgICAgICAgdGFyZ2V0VG91
Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0b3VjaFRhcmdldC5nZXQoKSwgVG91
Y2hMaXN0OjpjcmVhdGUoKSkuZmlyc3Q7CisgICAgICAgICAgICB0YXJnZXRUb3VjaGVzSXRlcmF0
b3IgPSB0b3VjaGVzQnlUYXJnZXQuc2V0KHRvdWNoVGFyZ2V0LmdldCgpLCBUb3VjaExpc3Q6OmNy
ZWF0ZSgpKS5pdGVyYXRvcjsKIAogICAgICAgICAvLyB0b3VjaGVzIGFuZCB0YXJnZXRUb3VjaGVz
IHNob3VsZCBvbmx5IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdG91Y2hlcyBzdGlsbCBvbiB0
aGUgc2NyZWVuLCBzbyBpZiB0aGlzIHBvaW50IGlzCiAgICAgICAgIC8vIHJlbGVhc2VkIG9yIGNh
bmNlbGxlZCBpdCB3aWxsIG9ubHkgYXBwZWFyIGluIHRoZSBjaGFuZ2VkVG91Y2hlcyBsaXN0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDczMWUxZmMwNzliNWZlOWZiMzkwMGZiNTdi
ZjM2ZTFkOTY2YThmYjIuLmY5MzljOWJmZDJhMzc2MTlmNjU3N2JmN2QyNWZkZjE3MmIzYTA3Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTkwLDE1ICs5MCwxNSBAQCBQYWdlR3Jv
dXAqIFBhZ2VHcm91cDo6cGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKQogICAgIGlm
ICghcGFnZUdyb3VwcykKICAgICAgICAgcGFnZUdyb3VwcyA9IG5ldyBQYWdlR3JvdXBNYXA7CiAK
LSAgICBwYWlyPFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHBhZ2VHcm91
cHMtPmFkZChncm91cE5hbWUsIDApOworICAgIFBhZ2VHcm91cE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IHBhZ2VHcm91cHMtPmFkZChncm91cE5hbWUsIDApOwogCi0gICAgaWYgKHJlc3VsdC5zZWNv
bmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJl
c3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IFBhZ2VHcm91cChncm91cE5hbWUpOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgUGFnZUdyb3VwKGdy
b3VwTmFtZSk7CiAgICAgfQogCi0gICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAg
ICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIHZv
aWQgUGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSgpCkBAIC0xOTcsNyArMTk3LDcgQEAgaW5s
aW5lIHZvaWQgUGFnZUdyb3VwOjphZGRWaXNpdGVkTGluayhMaW5rSGFzaCBoYXNoKQogewogICAg
IEFTU0VSVChzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk7CiAjaWYgIVBMQVRGT1JNKENIUk9NSVVN
KQotICAgIGlmICghbV92aXNpdGVkTGlua0hhc2hlcy5hZGQoaGFzaCkuc2Vjb25kKQorICAgIGlm
ICghbV92aXNpdGVkTGlua0hhc2hlcy5hZGQoaGFzaCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0
dXJuOwogI2VuZGlmCiAgICAgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZCh0aGlzLCBoYXNoKTsK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyYwogICAgIE93blB0cjxV
c2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHQoc291cmNlLCB1
cmwsIHdoaXRlbGlzdCwgYmxhY2tsaXN0LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcykp
OwogICAgIGlmICghbV91c2VyU2NyaXB0cykKICAgICAgICAgbV91c2VyU2NyaXB0cyA9IGFkb3B0
UHRyKG5ldyBVc2VyU2NyaXB0TWFwKTsKLSAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNj
cmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5maXJzdC0+
c2Vjb25kOworICAgIE93blB0cjxVc2VyU2NyaXB0VmVjdG9yPiYgc2NyaXB0c0luV29ybGQgPSBt
X3VzZXJTY3JpcHRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
aWYgKCFzY3JpcHRzSW5Xb3JsZCkKICAgICAgICAgc2NyaXB0c0luV29ybGQgPSBhZG9wdFB0cihu
ZXcgVXNlclNjcmlwdFZlY3Rvcik7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZCh1c2VyU2Ny
aXB0LnJlbGVhc2UoKSk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVz
ZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcm
IHMKICAgICBPd25QdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gYWRvcHRQdHIo
bmV3IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5q
ZWN0ZWRGcmFtZXMsIGxldmVsKSk7CiAgICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cykKICAgICAg
ICAgbV91c2VyU3R5bGVTaGVldHMgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hlZXRNYXApOwot
ICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1f
dXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAg
T3duUHRyPFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2Vy
U3R5bGVTaGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBp
ZiAoIXN0eWxlU2hlZXRzSW5Xb3JsZCkKICAgICAgICAgc3R5bGVTaGVldHNJbldvcmxkID0gYWRv
cHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0VmVjdG9yKTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQt
PmFwcGVuZCh1c2VyU3R5bGVTaGVldC5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcAppbmRleCA5MzFmMjYwM2ZkNGYyMjFiNGI1ZGUzYWNkYzM3ZDk3NmQxM2Rm
MjI3Li5jMmE1YWIxMTQzNWVmNmRiMDU3NjhjNzZjYTAzNTdiNTYyNTgzMzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTMxLDExICsxMzEsMTEgQEAgdm9pZCBT
ZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHNvdXJjZU8KICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNvdXJjZVN0
cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwotICAgIHBhaXI8T3JpZ2luQWNjZXNzTWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0
cmluZywgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CisgICAg
T3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRk
KHNvdXJjZVN0cmluZywgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3QpOwogCi0gICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZp
cnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vz
c0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBP
cmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCBkZDA1NDYxOGQwZjgwYTgwMjYyNjg1ZDhi
MGY0YTk5N2JiMTNiNTM4Li5kYTYzYWZhNjRkY2M1MTJiNDU3YjFhMGM1NmE5OTJhNjdkYTQ5Y2Qx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMzIsOCArMTMy
LDggQEAgdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0
ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgICAgICByZXNwb25kaW5n
Tm9kZSA9IHZpc2l0ZWROb2RlOwogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHRoZSBpdGVy
YXRpb24gdG8gY29sbGVjdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSByZXNwb25kZXIsIHdoaWNoIHdl
IHdpbGwgbmVlZCBsYXRlci4KICAgICAgICAgICAgICAgICBmb3IgKHZpc2l0ZWROb2RlID0gdmlz
aXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0g
dmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICBw
YWlyPEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gYW5jZXN0b3Jz
VG9SZXNwb25kZXJzU2V0LmFkZCh2aXNpdGVkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgSGFzaFNldDxOb2RlKj46
OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3BvbmRlcnNTZXQuYWRkKHZpc2l0
ZWROb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5h
cnlQcm9wZXJ0eUxpc3QuY3BwCmluZGV4IDRiODIzYjEyYjc4YjY1ZGNjNzViYzExMTc2MjY4MTQw
NjZmMjg1ZjkuLjRiYzdjMmU2MDdlYWIzZTBiNDczNjBhNjIyNmUxYTI3YTUyMDhiMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRl
Z2VyKGludCBpbnRlZ2VyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2ludGVnZXJa
ZXJvT2JqZWN0UmVmZXJlbmNlID0gbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmICghbV9pbnRlZ2Vycy5hZGQoaW50ZWdlciwgbV9jdXJyZW50T2JqZWN0
UmVmZXJlbmNlKS5zZWNvbmQpCisgICAgICAgIGlmICghbV9pbnRlZ2Vycy5hZGQoaW50ZWdlciwg
bV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICArK21fY3VycmVudE9iamVjdFJlZmVyZW5jZTsKQEAgLTIxNCw3ICsyMTQs
NyBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlcihpbnQgaW50ZWdl
cikKIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgKyttX2N1cnJlbnRBZ2dyZWdhdGVTaXplOwotICAgIGlmICghbV9z
dHJpbmdzLmFkZChzdHJpbmcsIG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuc2Vjb25kKQorICAg
IGlmICghbV9zdHJpbmdzLmFkZChzdHJpbmcsIG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuaXNO
ZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogICAgICsrbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNl
OwogICAgIHdyaXRlU3RyaW5nT2JqZWN0KHN0cmluZyk7CkBAIC0yMjQsMTIgKzIyNCwxMiBAQCB2
b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5KGNvbnN0IGludCog
aW50ZWdlcnMsIHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCBzYXZlZEFnZ3JlZ2F0ZVNpemUg
PSArK21fY3VycmVudEFnZ3JlZ2F0ZVNpemU7CiAgICAgQVNTRVJUKHNpemUpOwotICAgIHBhaXI8
SW50ZWdlckFycmF5TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9pbnRlZ2VyQXJy
YXlzLmFkZChJbnRlZ2VyQXJyYXkoaW50ZWdlcnMsIHNpemUpLCAwKTsKLSAgICBpZiAoIWFkZFJl
c3VsdC5zZWNvbmQpCisgICAgSW50ZWdlckFycmF5TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0g
bV9pbnRlZ2VyQXJyYXlzLmFkZChJbnRlZ2VyQXJyYXkoaW50ZWdlcnMsIHNpemUpLCAwKTsKKyAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHdyaXRlSW50ZWdlcihpbnRlZ2Vy
c1tpXSk7Ci0gICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBtX2N1cnJlbnRPYmplY3RSZWZl
cmVuY2UrKzsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG1fY3VycmVudE9iamVj
dFJlZmVyZW5jZSsrOwogICAgIHdyaXRlQXJyYXlPYmplY3Qoc2l6ZSk7CiAgICAgbV9jdXJyZW50
QWdncmVnYXRlU2l6ZSA9IHNhdmVkQWdncmVnYXRlU2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
CmluZGV4IDFiNWE3MzE5ZTQyZDlkZjE0YmQyNTk1MTEzMTkxNjJlODcxNWMxNzUuLmQ1MTdhYWE3
YjQwMjQ0ODkzMmRkNDJiZjlkYWI0MGQxMDJhOGQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcApA
QCAtNDI4LDE4ICs0MjgsMTggQEAgdm9pZCBMYXllclRpbGVyOjpwcm9jZXNzVGV4dHVyZUpvYihj
b25zdCBUZXh0dXJlSm9iJiBqb2IsIFRpbGVKb2JzTWFwJiB0aWxlSm9ic00KIHZvaWQgTGF5ZXJU
aWxlcjo6YWRkVGlsZUpvYihjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBjb25zdCBUZXh0dXJlSm9i
JiBqb2IsIFRpbGVKb2JzTWFwJiB0aWxlSm9ic01hcCkKIHsKICAgICAvLyBIYXNoTWFwOjphZGQg
YWx3YXlzIHJldHVybnMgYSB2YWxpZCBpdGVyYXRvciBldmVuIHRoZSBrZXkgYWxyZWFkeSBleGlz
dHMuCi0gICAgcGFpcjxUaWxlSm9ic01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHRpbGVK
b2JzTWFwLmFkZChpbmRleCwgJmpvYik7CisgICAgVGlsZUpvYnNNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSB0aWxlSm9ic01hcC5hZGQoaW5kZXgsICZqb2IpOwogCiAgICAgLy8gU3VjY2Vzc2Z1bGx5
IGFkZGVkIHRoZSBuZXcgam9iLgotICAgIGlmIChyZXN1bHQuc2Vjb25kKQorICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSW4gdGhpcyBjYXNlIHdl
IGxlYXZlIHRoZSBwcmV2aW91cyBqb2IuCi0gICAgaWYgKGpvYi5tX3R5cGUgPT0gVGV4dHVyZUpv
Yjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuZmlyc3QtPnNlY29uZC0+bV90eXBlID09IFRleHR1
cmVKb2I6OkRpc2NhcmRDb250ZW50cykKKyAgICBpZiAoam9iLm1fdHlwZSA9PSBUZXh0dXJlSm9i
OjpEaXJ0eUNvbnRlbnRzICYmIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5tX3R5cGUgPT0gVGV4
dHVyZUpvYjo6RGlzY2FyZENvbnRlbnRzKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBPdmVy
cmlkZSB0aGUgcHJldmlvdXMgam9iLgotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gJmpvYjsK
KyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9ICZqb2I7CiB9CiAKIHZvaWQgTGF5ZXJUaWxl
cjo6cGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxlKiB0aWxlLCBjb25zdCBUZXh0dXJlSm9iJiBqb2Is
IGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZjZjY2I5NWQ3ZTcx
MGEzYzEzZjYxZjIyMDM2NzgwZWJlYjY3NzViMy4uMWMwMWI2OWM4MjJmMTQyYjMzNjliNTk1Nzcy
MWE3NDIxYjNlMjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNDg4LDE2ICsyNDg4LDE2IEBAIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9u
ZShDbG9uZUlEIGNsb25lSUQsIFBsCiAgICAgLy8gQWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBn
ZXQgYW4gaXRlcmF0b3IgZm9yIHRoZSBpbnNlcnRpb24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4g
dGhhdCB0ZWxscwogICAgIC8vIHVzIHdoZXRoZXIgdGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlz
IHRlY2huaXF1ZSBhdm9pZHMgdHdvIGhhc2ggbG9va3Vwcy4KICAgICBSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBkdW1teTsKLSAgICBwYWlyPExheWVyTWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVz
dWx0ID0gY2xvbmVzLT5hZGQoY2xvbmVJRCwgZHVtbXkpOwotICAgIGlmICghYWRkUmVzdWx0LnNl
Y29uZCkgeworICAgIExheWVyTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gY2xvbmVzLT5hZGQo
Y2xvbmVJRCwgZHVtbXkpOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgLy8gVmFsdWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCi0gICAgICAg
IHJlc3VsdExheWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIHJl
c3VsdExheWVyID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgcmVzdWx0TGF5ZXIgPSBjbG9uZUxheWVyKHNvdXJjZUxheWVyLCBjbG9uZUxl
dmVsKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHJlc3VsdExheWVyLT5zZXROYW1lKFN0cmlu
Zzo6Zm9ybWF0KCJDbG9uZSAlZCBvZiBsYXllciAlcCIsIGNsb25lSURbMFVdLCBzb3VyY2VMYXll
ci0+cGxhdGZvcm1MYXllcigpKSk7CiAjZW5kaWYKLSAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5z
ZWNvbmQgPSByZXN1bHRMYXllcjsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
PSByZXN1bHRMYXllcjsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0TGF5ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQpp
bmRleCBkOTMyYzFmNzIzMTJlMGU4Yzg4OTc0N2NmYmExOWJmN2UyYTVkNTBmLi4wOTdkZmJmYzZj
MDViNTdmYmU0YmQyNzU5NWU4NWJjMDUwYzlhN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0KQEAgLTM2NCw3ICszNjQs
NyBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVzKCkKICAgICAgICAgICAgIFRpbGVJ
bmRleCB0aWxlSW5kZXgoeCwgeSk7CiAKICAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBy
ZWN0Rm9yVGlsZUluZGV4KHRpbGVJbmRleCk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8V2ViVGls
ZUxheWVyPiYgdGlsZUxheWVyID0gbV90aWxlcy5hZGQodGlsZUluZGV4LCAwKS5maXJzdC0+c2Vj
b25kOworICAgICAgICAgICAgUmV0YWluUHRyPFdlYlRpbGVMYXllcj4mIHRpbGVMYXllciA9IG1f
dGlsZXMuYWRkKHRpbGVJbmRleCwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlm
ICghdGlsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgdGlsZUxheWVyID0gY3JlYXRlVGlsZUxh
eWVyKHRpbGVSZWN0KTsKICAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0
KCkgYWRkU3VibGF5ZXI6dGlsZUxheWVyLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVy
LmNwcAppbmRleCAwMGM2MzA4MGRmYzc3ZTRiOGM0MmIxNmU2ZGE2ODA5OTk5MTc3ZGE4Li5iNGZl
YWVlNjgyZDhjNDQ1OWE4MmJmYTZkZDlkZWY2OTY2YTNhYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIExheWVyQ2hhbmdlc0ZsdXNoZXI6OkxheWVy
Q2hhbmdlc0ZsdXNoZXIoKQogCiB2b2lkIExheWVyQ2hhbmdlc0ZsdXNoZXI6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1Nvb24oQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKLSAg
ICBpZiAoIW1faG9zdHNXaXRoQ2hhbmdlc1RvRmx1c2guYWRkKGhvc3QpLnNlY29uZCB8fCBtX2hv
b2spCisgICAgaWYgKCFtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoLmFkZChob3N0KS5pc05ld0Vu
dHJ5IHx8IG1faG9vaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0SG9vaygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxz
Q2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwCmluZGV4IDcxMWI4OTZhYzYxMjg4MzYyZWQ3MmVk
ZjcyYTQ3MDkyZmU3MjI0YmUuLmNjNTJjNTJlYjcwNTc4MmRlMWY5NjhkYzgwM2M0NWU0ZjJhZTIy
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKQEAgLTQxNCw4ICs0MTQs
OCBAQCBib29sIGdldERlcml2ZWRGb250RGF0YShjb25zdCBVQ2hhciogZmFtaWx5LAogICAgICAg
ICAvLyBhIGZvbnQgZXZlbiBpZiB0aGVyZSdzIG5vIGZvbnQgbWF0Y2hpbmcgdGhlIG5hbWUuIE5l
ZWQgdG8KICAgICAgICAgLy8gY2hlY2sgaXQgYWdhaW5zdCB3aGF0IHdlIGFjdHVhbGx5IHdhbnQg
KGFzIGlzIGRvbmUgaW4KICAgICAgICAgLy8gRm9udENhY2hlV2luLmNwcCkKLSAgICAgICAgcGFp
cjxGb250RGF0YUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBmb250RGF0YUNhY2hlLmFk
ZChmb250S2V5LCBGb250RGF0YSgpKTsKLSAgICAgICAgZGVyaXZlZCA9ICZlbnRyeS5maXJzdC0+
c2Vjb25kOworICAgICAgICBGb250RGF0YUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBmb250RGF0
YUNhY2hlLmFkZChmb250S2V5LCBGb250RGF0YSgpKTsKKyAgICAgICAgZGVyaXZlZCA9ICZlbnRy
eS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBkZXJpdmVkLT5oZm9udCA9IENyZWF0ZUZvbnRJ
bmRpcmVjdChsb2dmb250KTsKICAgICAgICAgLy8gR2V0QXNjZW50IG1heSByZXR1cm4ga1VuZGVm
aW5lZEFzY2VudCwgYnV0IHdlIHN0aWxsIHdhbnQgdG8KICAgICAgICAgLy8gY2FjaGUgaXQgc28g
dGhhdCB3ZSB3b24ndCBoYXZlIHRvIGNhbGwgQ3JlYXRlRm9udEluZGlyZWN0IG9uY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAzNzJh
MGUwOGU4ZjNiMjdjNzQ1ZWI0NWIxNTIzNTM5NGU3MjAyNmNiLi45OGVmMjU0YWE5OGY1ODIyODdm
MjQ2MTgyMjc3MDY4NjQ0ZmM0ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJp
bGl0eShkb3UKICAgICAgICAgICAgIC8vIG9mIGJsb2NrZWQgcHJvcGVydGllcy4KICAgICAgICAg
ICAgIGJvb2wgbnVsbEludGVyc2VjdGlvbiA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKFRhcmdl
dFByb3BlcnRpZXM6Oml0ZXJhdG9yIHBJdGVyID0gZW5xdWV1ZWRQcm9wZXJ0aWVzLmJlZ2luKCk7
IHBJdGVyICE9IGVucXVldWVkUHJvcGVydGllcy5lbmQoKTsgKytwSXRlcikgewotICAgICAgICAg
ICAgICAgIGlmICghYmxvY2tlZFByb3BlcnRpZXMuYWRkKCpwSXRlcikuc2Vjb25kKQorICAgICAg
ICAgICAgICAgIGlmICghYmxvY2tlZFByb3BlcnRpZXMuYWRkKCpwSXRlcikuaXNOZXdFbnRyeSkK
ICAgICAgICAgICAgICAgICAgICAgbnVsbEludGVyc2VjdGlvbiA9IGZhbHNlOwogICAgICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQVRTVUkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcAppbmRleCAwNDM3YmNk
ZmMwOWI5NjdkYTdmZTE5NmYyN2JmMmUwZTcxMjJlZDk5Li5iZTlmNzQxMDRmZTc0MzQ0NTcxNTY0
MTYzY2Y3YWFkNzBlMDcyYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQVRTVUkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5j
cHAKQEAgLTI3OCwxNSArMjc4LDE1IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVMaWdhdHVyZXMoY29u
c3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBBVFNVU3R5bGUgYXRzdVN0eWxlCiBzdGF0aWMg
QVRTVVN0eWxlIGluaXRpYWxpemVBVFNVU3R5bGUoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRE
YXRhLCBUeXBlc2V0dGluZ0ZlYXR1cmVzIHR5cGVzZXR0aW5nRmVhdHVyZXMpCiB7CiAgICAgdW5z
aWduZWQga2V5ID0gdHlwZXNldHRpbmdGZWF0dXJlcyArIDE7Ci0gICAgcGFpcjxIYXNoTWFwPHVu
c2lnbmVkLCBBVFNVU3R5bGU+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gZm9udERhdGEt
Pm1fQVRTVVN0eWxlTWFwLmFkZChrZXksIDApOwotICAgIEFUU1VTdHlsZSYgYXRzdVN0eWxlID0g
YWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAg
IEhhc2hNYXA8dW5zaWduZWQsIEFUU1VTdHlsZT46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBmb250
RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRkKGtleSwgMCk7CisgICAgQVRTVVN0eWxlJiBhdHN1U3R5
bGUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05l
d0VudHJ5KQogICAgICAgICByZXR1cm4gYXRzdVN0eWxlOwogCiAgICAgQVRTVUZvbnRJRCBmb250
SUQgPSBmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuY3RGb250KCkgPyBDVEZvbnRHZXRQbGF0Zm9y
bUZvbnQoZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCAwKSA6IDA7CiAgICAgaWYg
KCFmb250SUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJ1bmFibGUgdG8gZ2V0IEFUU1VGb250SUQg
Zm9yICVwIiwgZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmZvbnQoKSk7Ci0gICAgICAgIGZvbnRE
YXRhLT5tX0FUU1VTdHlsZU1hcC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgZm9u
dERhdGEtPm1fQVRTVVN0eWxlTWFwLnJlbW92ZShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4
IDgzMmJiOWRkZjhkYTEyOThmZDM5MzI1NjI4NGQwNGU2MzU4ZjI0MjYuLjA1MTkzNzQyYzU4NTJk
YmU5YzljZWQ2NGI5YTA3YWFkMmMxZWE0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKQEAgLTQyLDkgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0ZEaWN0aW9uYXJ5UmVm
IFNpbXBsZUZvbnREYXRhOjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJl
cyB0eXBlc2V0dGluZ0ZlYXR1cmVzLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0
CiB7CiAgICAgdW5zaWduZWQga2V5ID0gdHlwZXNldHRpbmdGZWF0dXJlcyArIDE7Ci0gICAgcGFp
cjxIYXNoTWFwPHVuc2lnbmVkLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+OjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9DRlN0cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4oKSk7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4m
IGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAgaWYg
KCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+ID46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX0NGU3RyaW5nQXR0cmlidXRl
cy5hZGQoa2V5LCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPnNlY29uZDsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm4gYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCk7CiAgICAgCiAgICAgYm9vbCB0cmVhdExpbmVB
c1ZlcnRpY2FsID0gb3JpZW50YXRpb24gPT0gVmVydGljYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KaW5k
ZXggOGY0YTkxOTNlZjRkNTMyNzFiZTU0YjBkYzVlZmJkOWRlYmFiZGM0NS4uNzRiMjY4NmQ2Y2U2
MGJiZmE3MGFhMGIyMjUzMzViOTYwMzIzNjRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQpAQCAtNDQw
LDkgKzQ0MCw5IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJh
Y3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzCiAgICAgaWYgKCFtX2NvbWJpbmlu
Z0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydCkKICAgICAgICAgbV9jb21iaW5pbmdDaGFyYWN0ZXJT
ZXF1ZW5jZVN1cHBvcnQgPSBhZG9wdFB0cihuZXcgSGFzaE1hcDxTdHJpbmcsIGJvb2w+KTsKIAot
ICAgIHBhaXI8V1RGOjpIYXNoTWFwPFN0cmluZywgYm9vbD46Oml0ZXJhdG9yLCBib29sPiBhZGRS
ZXN1bHQgPSBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydC0+YWRkKFN0cmluZyhj
aGFyYWN0ZXJzLCBsZW5ndGgpLCBmYWxzZSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgV1RGOjpIYXNoTWFw
PFN0cmluZywgYm9vbD46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2NvbWJpbmluZ0NoYXJhY3Rl
clNlcXVlbmNlU3VwcG9ydC0+YWRkKFN0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBmYWxzZSk7
CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIGFkZFJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gY2dGb250KEFk
b3B0Q0YsIENURm9udENvcHlHcmFwaGljc0ZvbnQocGxhdGZvcm1EYXRhKCkuY3RGb250KCksIDAp
KTsKIApAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNv
bWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQg
PSB0cnVlOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gdHJ1ZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcAppbmRleCA2OTJmZDZkMGQxZjFkYjgx
YWQyOTcyYTNmMzM0MzdiZWY2ZmU2MzVkLi4xOTc5MGFkNDliMzMwM2RkN2I2MmM3ZTdhMGE4MjM2
NzdiNGNmZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcApAQCAtMjg1LDExICsyODUsMTEgQEAg
UGFzc1JlZlB0cjxGaXhlZFNpemVGb250RGF0YT4gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWkKIHN0YXRpYyBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZvbnRE
YXRhPiBjcmVhdGVGaXhlZFNpemVGb250RGF0YShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwg
dW5zaWduZWQgd2VpZ2h0LCBib29sIGl0YWxpYykKIHsKICAgICBGaXhlZFNpemVGb250RGF0YUtl
eSBrZXkoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7Ci0gICAgcGFpcjxGaXhlZFNpemVGb250Q2Fj
aGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBnX2ZpeGVkU2l6ZUZvbnRDYWNoZS5hZGQoa2V5
LCBSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+KCkpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IEZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUo
ZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7CisgICAgRml4ZWRTaXplRm9udENhY2hlOjpBZGRSZXN1
bHQgcmVzdWx0ID0gZ19maXhlZFNpemVGb250Q2FjaGUuYWRkKGtleSwgUmVmUHRyPEZpeGVkU2l6
ZUZvbnREYXRhPigpKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kID0gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdl
aWdodCwgaXRhbGljKTsKIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBy
ZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIHN0YXRpYyBMT05HIHRvR0RJRm9u
dFdlaWdodChGb250V2VpZ2h0IGZvbnRXZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4IGE2NjliYzhlZjg1MjNkNDg2NmYxZWI4
MGEyNTEyMzMwMmFkNGM0NWIuLjcyMGYwZmQzNjAxYWQ1NWM0MWYwNDhkYTM4ZTkwYjE0MGM3ODQy
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMu
Y3BwCkBAIC03Nyw5ICs3Nyw5IEBAIHN0YXRpYyBTdHlsZUNvbnRleHRNYXAmIHN0eWxlQ29udGV4
dE1hcCgpCiAKIHN0YXRpYyBHdGtTdHlsZUNvbnRleHQqIGdldFN0eWxlQ29udGV4dChHVHlwZSB3
aWRnZXRUeXBlKQogewotICAgIHN0ZDo6cGFpcjxTdHlsZUNvbnRleHRNYXA6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBzdHlsZUNvbnRleHRNYXAoKS5hZGQod2lkZ2V0VHlwZSwgMCk7Ci0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQu
Z2V0KCk7CisgICAgU3R5bGVDb250ZXh0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3R5bGVDb250
ZXh0TWFwKCkuYWRkKHdpZGdldFR5cGUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkp
CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIAogICAgIEd0
a1dpZGdldFBhdGgqIHBhdGggPSBndGtfd2lkZ2V0X3BhdGhfbmV3KCk7CiAgICAgZ3RrX3dpZGdl
dF9wYXRoX2FwcGVuZF90eXBlKHBhdGgsIHdpZGdldFR5cGUpOwpAQCAtMTExLDcgKzExMSw3IEBA
IHN0YXRpYyBHdGtTdHlsZUNvbnRleHQqIGdldFN0eWxlQ29udGV4dChHVHlwZSB3aWRnZXRUeXBl
KQogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9wYXRoKGNvbnRleHQuZ2V0KCksIHBhdGgpOwog
ICAgIGd0a193aWRnZXRfcGF0aF9mcmVlKHBhdGgpOwogCi0gICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgPSBjb250ZXh0OworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gY29udGV4dDsKICAg
ICByZXR1cm4gY29udGV4dC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RocmVhZENoZWNrLm1tCmluZGV4IDQ3OTIxOTE5Njg2ZjdhYWM2MzZkOTEyOTRmZjE0ZTEwMzRm
NDczZGUuLjg5ZmVmMDMwOWM5NDk5NDJlMjRkYTFjMjZkMzlhNThkNTdkMTQ1ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb24s
IFdlYkNvcmU6OlRocmVhZFZpb2xhdGlvbgogICAgICAgICBjYXNlIE5vVGhyZWFkQ2hlY2s6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb2dPbkZpcnN0VGhyZWFkVmlvbGF0aW9u
OgotICAgICAgICAgICAgaWYgKGxvZ2dlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb24pLnNlY29uZCkg
eworICAgICAgICAgICAgaWYgKGxvZ2dlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb24pLmlzTmV3RW50
cnkpIHsKICAgICAgICAgICAgICAgICBOU0xvZyhAIldlYktpdCBUaHJlYWRpbmcgVmlvbGF0aW9u
IC0gJXMgY2FsbGVkIGZyb20gc2Vjb25kYXJ5IHRocmVhZCIsIGZ1bmN0aW9uKTsKICAgICAgICAg
ICAgICAgICBOU0xvZyhAIkFkZGl0aW9uYWwgdGhyZWFkaW5nIHZpb2xhdGlvbnMgZm9yIHRoaXMg
ZnVuY3Rpb24gd2lsbCBub3QgYmUgbG9nZ2VkLiIpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXggNDRj
NTY4MWZiYmQ1MzQ4YjIwMTQ5MzUxZmEzNjgzMmQ3OTU4MjYyOC4uNTAwOTFlMTlkM2FmNTZmZjRh
OGRmMTc1YmY4OTc4NzAwNzYxNDI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBIVFRQ
SGVhZGVyTWFwOjpnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVy
biBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjpnZXQobmFt
ZSk7CiB9CiAKLXBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IEhUVFBIZWFkZXJN
YXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitI
VFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUsIHZhbHVlKTsK
IH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEhUVFBIZWFkZXJNYXA6OmNvbnRhaW5zKGNvbnN0
IGNoYXIqIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGZpbmQ8Y29uc3QgY2hhciosIENhc2VGb2xk
aW5nQ1N0cmluZ1RyYW5zbGF0b3I+KG5hbWUpICE9IGVuZCgpOwogfQogCi1wYWlyPEhUVFBIZWFk
ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0hUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCBIVFRQSGVh
ZGVyTWFwOjphZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6
YWRkPGNvbnN0IGNoYXIqLCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yPihuYW1lLCB2YWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBI
ZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5oCmluZGV4IDAyMDcxZTM2MTBjMWQ0YjRmY2RmNGQ2Yzk1OWI0OWY4N2YzYTVmMTUuLjEyYmRl
MDY4OTdlN2NlM2YzZWM5MDEyZTFjMzdmZGZmZThkODljMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC01MSwxMiArNTEsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgU3RyaW5nIGdldChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAg
ICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKICAgICAgICAgLy8gQWx0ZXJuYXRlIGFjY2Vzc29ycyB0aGF0IGFyZSBmYXN0
ZXIgdGhhbiBjb252ZXJ0aW5nIHRoZSBjaGFyKiB0byBBdG9taWNTdHJpbmcgZmlyc3QuCiAgICAg
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwogICAgICAgICBTdHJpbmcgZ2V0
KGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgICAgICBBZGRSZXN1bHQg
YWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgICAgICAKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCA0M2E2NGU5NzA3MjQwNDA0MjI3ZGNiMGQ1ZTI1NmQz
NzRiODczNTlhLi4zNTA5NzkyOTI3OGM3NjA2NGM0YjBkZWI5YWZlMzlmZjE5YmU0YzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAKQEAgLTM3MSw5ICszNzEsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6
OnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogdm9pZCBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsK
LSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2h0dHBI
ZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsgCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKKyAgICBIVFRQSGVh
ZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFkZChuYW1lLCB2
YWx1ZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7CiAKICAgICBpZiAodXJsKCkucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKQogICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggM2U1OThiYWI2
YjlhODUwYTVhNmNjOTI4YzAwNjljMDg5M2E4MTA5ZS4uNmU4MTRhZWI1ZWY5ZDYzZTA2MjBmYWI4
MmI2YjJkNzM2NjZmMzVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjphZGQoUGFzc1Jl
ZlB0cjxQbHVnaW5QYWNrYWdlPiBwcnBQYWNrYWdlKQogCiAgICAgUmVmUHRyPFBsdWdpblBhY2th
Z2U+IHBhY2thZ2UgPSBwcnBQYWNrYWdlOwogCi0gICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2th
Z2UpLnNlY29uZCkKKyAgICBpZiAoIW1fcGx1Z2lucy5hZGQocGFja2FnZSkuaXNOZXdFbnRyeSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9wbHVnaW5zQnlQYXRoLmFkZChwYWNrYWdl
LT5wYXRoKCksIHBhY2thZ2UpOwpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAKICAgICAgICAgUmVmUHRyPFBsdWdp
blBhY2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlRnJvbUNhY2hl
KHBhdGgsIGxhc3RNb2RpZmllZCwgbmFtZSwgZGVzYywgbWltZURlc2MpOwogCi0gICAgICAgIGlm
IChwYWNrYWdlICYmIGNhY2hlZFBsdWdpbnMuYWRkKHBhY2thZ2UpLnNlY29uZCkgeworICAgICAg
ICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5pc05ld0VudHJ5KSB7
CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcy5hZGQocGFja2FnZS0+cGF0
aCgpLCBwYWNrYWdlLT5sYXN0TW9kaWZpZWQoKSk7CiAgICAgICAgICAgICBjYWNoZWRQbHVnaW5z
QnlQYXRoLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggMjcx
MjFjNjY0ZTNjNmI2YmM2YjVkNmVkZGJiYWJiY2Y3MmI3NjllZC4uZmZiNDIxYTRjNDI4YWNlOTI0
ZGYzMzNlMGEwMDg1MTk2MzYxMDFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
d2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBh
dGhzKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBTdHJp
bmcgZnVsbFBhdGggPSAqaXQgKyAiXFwiICsgZmlsZW5hbWU7Ci0gICAgICAgICAgICBpZiAoIXVu
aXF1ZUZpbGVuYW1lcy5hZGQoZnVsbFBhdGgpLnNlY29uZCkKKyAgICAgICAgICAgIGlmICghdW5p
cXVlRmlsZW5hbWVzLmFkZChmdWxsUGF0aCkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgcGF0aHMuYWRkKGZ1bGxQYXRoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDY1NzA3NDc3ZDcwNTIwZjY4NjQ2MDg3
YzEyYTcyMWZmMjRlZjZkM2IuLjgzNjJhYWUzZTY3NTJhMTEyN2EwYzljMDVkNTY5N2M2NzBmYjFl
ZjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzgzMyw3
ICszODMzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQo
UmVuZGVyQm94KiBkZXNjZW5kYW50KQogICAgICAgICBkZXNjZW5kYW50U2V0ID0gbmV3IEhhc2hT
ZXQ8UmVuZGVyQm94Kj47CiAgICAgICAgIGdQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPnNl
dCh0aGlzLCBkZXNjZW5kYW50U2V0KTsKICAgICB9Ci0gICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRh
bnRTZXQtPmFkZChkZXNjZW5kYW50KS5zZWNvbmQ7CisgICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRh
bnRTZXQtPmFkZChkZXNjZW5kYW50KS5pc05ld0VudHJ5OwogICAgIGlmICghYWRkZWQpIHsKICAg
ICAgICAgQVNTRVJUKGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5nZXQoZGVzY2VuZGFudCkp
OwogICAgICAgICBBU1NFUlQoZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmdldChkZXNjZW5k
YW50KS0+Y29udGFpbnModGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBlNWQ1OWJiOGUwYTIxZDJlMzYwMDc2MDc5
ODVjYTE3Y2IzNmRhMjI2Li45ZGQyMTgxMjUwMjVmMjkzYTg2YjU2NTk3YzhiNzZmMjE4NGNkNWYy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcApAQCAtNjYyLDE0ICs2NjIsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldExvZ2lj
YWxXaWR0aEZvclRleHRSdW4oUm9vdElubGluZUJveCogbGluZUJveCwgQmlkaVJ1biogcnUKICAg
ICBydW4tPm1fYm94LT5zZXRMb2dpY2FsV2lkdGgocmVuZGVyZXItPndpZHRoKHJ1bi0+bV9zdGFy
dCwgcnVuLT5tX3N0b3AgLSBydW4tPm1fc3RhcnQsIHhQb3MsIGxpbmVJbmZvLmlzRmlyc3RMaW5l
KCksICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdykgKyBoeXBoZW5XaWR0aCk7CiAgICAg
aWYgKCFmYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQocnVuLT5tX2Jv
eC0+aXNUZXh0KCkpOwotICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6
aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1bi0+bV9i
b3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5cGhPdmVy
ZmxvdygpKSkuZmlyc3Q7CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
OjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5t
X2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92
ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuZmlyc3QuaXNF
bXB0eSgpKTsKICAgICAgICAgY29weVRvVmVjdG9yKGZhbGxiYWNrRm9udHMsIGl0LT5zZWNvbmQu
Zmlyc3QpOwogICAgICAgICBydW4tPm1fYm94LT5wYXJlbnQoKS0+Y2xlYXJEZXNjZW5kYW50c0hh
dmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CiAgICAgfQogICAgIGlmICgoZ2x5cGhPdmVy
Zmxvdy50b3AgfHwgZ2x5cGhPdmVyZmxvdy5ib3R0b20gfHwgZ2x5cGhPdmVyZmxvdy5sZWZ0IHx8
IGdseXBoT3ZlcmZsb3cucmlnaHQpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPm1fYm94LT5pc1Rl
eHQoKSk7Ci0gICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRv
ciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5tX2JveCksIG1h
a2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92ZXJmbG93KCkp
KS5maXJzdDsKKyAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJh
dG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwg
bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3co
KSkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLnNlY29uZCA9IGdseXBoT3ZlcmZsb3c7
CiAgICAgICAgIHJ1bi0+bV9ib3gtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcAppbmRleCA4YzFiNmJmMTliNzNhNThiMDQ3Mjg4ZTk1NWE1OWQ2NTVmMjYzYTliLi5kYWI1
ZDdiMjFlN2FlOWYwZGQ5YzAwYTU4NzQwMmFkYTFhYzdmYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtMjE3LDggKzIx
Nyw4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKCkK
IAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQo
UmVuZGVyTmFtZWRGbG93VGhyZWFkKiBvdGhlckZsb3dUaHJlYWQpCiB7Ci0gICAgc3RkOjpwYWly
PFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBtX2xheW91dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7Ci0gICAgaWYg
KHJlc3VsdC5zZWNvbmQpIHsKKyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWRDb3VudGVkU2V0OjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dU
aHJlYWQpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAvLyBUaGlzIGlz
IHRoZSBmaXJzdCB0aW1lIHdlIHNlZSB0aGlzIGRlcGVuZGVuY3kuIE1ha2Ugc3VyZSB3ZSByZWNh
bGN1bGF0ZSBhbGwgdGhlIGRlcGVuZGVuY2llcy4KICAgICAgICAgdmlldygpLT5zZXRJc1JlbmRl
ck5hbWVkRmxvd1RocmVhZE9yZGVyRGlydHkodHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCBjY2UyNWE3NDdmMjU4YjQzMjg1YWI4Mjk5
ODUzNGEyNzYzMDRhZGYxLi5kZTk4ZmY4OTE4ODQ1NDQxODZhNjg3NjQ1NWQ5MzczMmZlZDAxNTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtMjQ2LDcg
KzI0Niw3IEBAIFJlbmRlckJveFJlZ2lvbkluZm8qIFJlbmRlclJlZ2lvbjo6c2V0UmVuZGVyQm94
UmVnaW9uSW5mbyhjb25zdCBSZW5kZXJCb3gqIGJveCwKICAgICBpZiAoIW1faXNWYWxpZCB8fCAh
bV9mbG93VGhyZWFkKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE93blB0cjxSZW5kZXJCb3hS
ZWdpb25JbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94UmVnaW9uSW5mby5hZGQoYm94LCBudWxs
cHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxSZW5kZXJCb3hSZWdpb25JbmZvPiYgYm94
SW5mbyA9IG1fcmVuZGVyQm94UmVnaW9uSW5mby5hZGQoYm94LCBudWxscHRyKS5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGlmIChib3hJbmZvKQogICAgICAgICAqYm94SW5mbyA9IFJlbmRlckJveFJl
Z2lvbkluZm8obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdC
bG9ja0NoYWluSXNJbnNldCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggOTA3
ZmUxNjc3YjE3MDQ4MmM2ZjRhYzU3ZWQ5NzFkNTcyMTkxYWU0MS4uZjhmNDkzZGI4NWEwZGRiN2E2
OWMxZjE2Y2IxNzVmNzBhZDlkY2I4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJl
bmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSoKICAgICBpZiAoZ3JhZGllbnRVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAmJiBvYmpl
Y3RCb3VuZGluZ0JveC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE93
blB0cjxHcmFkaWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZChvYmpl
Y3QsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdy
YWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuaXRlcmF0b3It
PnNlY29uZDsKICAgICBpZiAoIWdyYWRpZW50RGF0YSkKICAgICAgICAgZ3JhZGllbnREYXRhID0g
YWRvcHRQdHIobmV3IEdyYWRpZW50RGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBiZWMw
ZjMzNzRmNDY0MzYyYTlhNTgzZWFmMTk4MzUwMjgxYjhkMDJjLi40ZGM1MDFiODA2YjNkOGRmMjU0
NzQ1NDNiY2ZjZmYzODc2MGQ2MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC04Myw3ICs4Myw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKFJlbmRlck9i
amVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSoKICAgICBpZiAobV9hdHRyaWJ1dGVzLnBhdHRlcm5V
bml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAm
JiBvYmplY3RCb3VuZGluZ0JveC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIE93blB0cjxQYXR0ZXJuRGF0YT4mIHBhdHRlcm5EYXRhID0gbV9wYXR0ZXJuTWFwLmFkZChv
YmplY3QsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFBhdHRlcm5EYXRhPiYg
cGF0dGVybkRhdGEgPSBtX3BhdHRlcm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuaXRlcmF0b3It
PnNlY29uZDsKICAgICBpZiAoIXBhdHRlcm5EYXRhKQogICAgICAgICBwYXR0ZXJuRGF0YSA9IGFk
b3B0UHRyKG5ldyBQYXR0ZXJuRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAu
Y3BwCmluZGV4IDQ4ZGI2OTgwMzIyMmE0Y2IzOWFkMWE4NTAwZmE2YzYzODQ4MjA2ODkuLjhlNDJk
MmYxNzZkZDNiMTExMmEwMWE1MWQ4ZGI2MmY0YjM4YmJhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTWFwLmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIFBhc3NSZWZQdHI8U3RvcmFnZU1h
cD4gU3RvcmFnZU1hcDo6c2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1CiAgICAgfQogICAgIG1fY3VycmVudExlbmd0aCA9IG5ld0xlbmd0aDsKIAotICAgIHBhaXI8
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX21h
cC5hZGQoa2V5LCB2YWx1ZSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICBh
ZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHZhbHVlOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOworICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gdmFsdWU7CiAKICAgICBpbnZhbGlkYXRlSXRlcmF0b3IoKTsKIApAQCAtMTcxLDggKzE3
MSw4IEBAIHZvaWQgU3RvcmFnZU1hcDo6aW1wb3J0SXRlbShjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBCZSBzdXJlIHRvIGNvcHkgdGhlIGtleXMvdmFs
dWVzIGFzIGl0ZW1zIGltcG9ydGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgYXJlIGRlc3RpbmVk
CiAgICAgLy8gdG8gY3Jvc3MgYSB0aHJlYWQgYm91bmRhcnkKLSAgICBwYWlyPEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAuYWRkKGtleS5pc29s
YXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuc2Vjb25kKTsgIC8vIFRydWUgaWYgdGhlIGtleSBkaWRuJ3QgZXhpc3QgcHJl
dmlvdXNseS4KKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fbWFwLmFkZChrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOyAvLyBUcnVlIGlmIHRo
ZSBrZXkgZGlkbid0IGV4aXN0IHByZXZpb3VzbHkuCiAKICAgICBBU1NFUlQobV9jdXJyZW50TGVu
Z3RoICsga2V5Lmxlbmd0aCgpID49IG1fY3VycmVudExlbmd0aCk7CiAgICAgbV9jdXJyZW50TGVu
Z3RoICs9IGtleS5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKaW5kZXggODEwYjk2NjVjMWZhODIwZTAxOTU0ZjcxZjE3YWVjNzdlNTVkZDI1
Zi4uOTk5ODA4OTQ1YTU4OGQ3MDlhZmFjNDc1NjNiMWY0NjFjMGNjYTFkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBA
QCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQsIFNWR1N0eWxlZAogICAgIC8vIG1hcCBpZiB0aGUgZWxlbWVudCBhbHJl
YWR5IGV4aXN0cy4gU28gd2UgYWRkIHdpdGggYSB2YWx1ZSBvZiAwLCBhbmQgaXQgZWl0aGVyIGZp
bmRzIHRoZQogICAgIC8vIGV4aXN0aW5nIGVsZW1lbnQgb3IgYWRkcyBhIG5ldyBvbmUgaW4gYSBz
aW5nbGUgb3BlcmF0aW9uLiBUaGUgIi5maXJzdC0+c2Vjb25kIiBpZGlvbSBnZXRzCiAgICAgLy8g
dXMgdG8gdGhlIGl0ZXJhdG9yIGZyb20gYWRkJ3MgcmVzdWx0LCBhbmQgdGhlbiB0byB0aGUgdmFs
dWUgaW5zaWRlIHRoZSBoYXNoIHRhYmxlLgotICAgIFNWR1BlbmRpbmdFbGVtZW50cyomIHNldCA9
IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU1ZHUGVu
ZGluZ0VsZW1lbnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgMCkuaXRlcmF0
b3ItPnNlY29uZDsKICAgICBpZiAoIXNldCkKICAgICAgICAgc2V0ID0gbmV3IFNWR1BlbmRpbmdF
bGVtZW50czsKICAgICBzZXQtPmFkZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IDcxMjIwMGNlNjkzYzlkNWRhYjE4MGEwNzE1ZmViN2ExZjlmNjM1MzMu
LmE3MWM0NDU1NTM4N2Y1ZmY4Njg0NDM1Mjk4NzQyNDQ0MmM2ODg1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtODk5LDkgKzg5OSw5IEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhCiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5h
bChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
cGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9yZXF1ZXN0SGVh
ZGVycy5hZGQobmFtZSwgdmFsdWUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwgIiArIHZhbHVlOworICAgIEhUVFBIZWFkZXJNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX3JlcXVlc3RIZWFkZXJzLmFkZChuYW1lLCB2YWx1ZSk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQgKz0gIiwgIiArIHZhbHVlOwogfQogCiBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlcXVl
c3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggMTU0YjY3ZTkyZDMyYzdkMTc2YmNiODEwOTBlOGRmNDE5
OGI0YjAwYS4uNzA3Y2M3ZmNlMmM3MzYxOGU4Mjk4NmRkNmI5NmM1ZmVmNzM5OGVjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgVmFsdWUg
RnVuSWQ6OmV2YWx1YXRlKCkgY29uc3QKICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHNldmVyYWwg
bm9kZXMgd2l0aCB0aGUgc2FtZSBpZCwgaWQoKSBzaG91bGQgcmV0dXJuIHRoZSBmaXJzdCBvbmUu
CiAgICAgICAgIC8vIEluIFdlYktpdCwgZ2V0RWxlbWVudEJ5SWQgYmVoYXZlcyBzbywgdG9vLCBh
bHRob3VnaCBpdHMgYmVoYXZpb3IgaW4gdGhpcyBjYXNlIGlzIGZvcm1hbGx5IHVuZGVmaW5lZC4K
ICAgICAgICAgTm9kZSogbm9kZSA9IGNvbnRleHRTY29wZS0+Z2V0RWxlbWVudEJ5SWQoU3RyaW5n
KGlkTGlzdC5jaGFyYWN0ZXJzKCkgKyBzdGFydFBvcywgZW5kUG9zIC0gc3RhcnRQb3MpKTsKLSAg
ICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFkZChub2RlKS5zZWNvbmQpCisgICAgICAgIGlm
IChub2RlICYmIHJlc3VsdFNldC5hZGQobm9kZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQobm9kZSk7CiAgICAgICAgIAogICAgICAgICBzdGFydFBvcyA9IGVuZFBvczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKaW5kZXggZDlkMWZkNDdkNjY0ZjBjOWJkZjE0NmFjMjFk
ZDkzYWRmYWI0YTIwNC4uYmExZGVkMzllMTg0YTAzZTVlMTgzNTUzZDgwZWQ2Y2FkZmVjZmFhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIExvY2F0
aW9uUGF0aDo6ZXZhbHVhdGUoTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAKICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IG1hdGNoZXMuc2l6ZSgpOyArK25v
ZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtYXRjaGVzW25vZGVJbmRl
eF07Ci0gICAgICAgICAgICAgICAgaWYgKCFuZWVkVG9DaGVja0ZvckR1cGxpY2F0ZU5vZGVzIHx8
IG5ld05vZGVzU2V0LmFkZChub2RlKS5zZWNvbmQpCisgICAgICAgICAgICAgICAgaWYgKCFuZWVk
VG9DaGVja0ZvckR1cGxpY2F0ZU5vZGVzIHx8IG5ld05vZGVzU2V0LmFkZChub2RlKS5pc05ld0Vu
dHJ5KQogICAgICAgICAgICAgICAgICAgICBuZXdOb2Rlcy5hcHBlbmQobm9kZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBy
ZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4
IDU4Y2Q4Nzk4ZWIzNjNhZWJiNmI0OGMzMzk1NjcwMGZmMTA3NWE1NzcuLjM2ODAwYTExNzQxNmQw
NzI2YTJhYjIyMjg5OTdhMGJmYjFjODkwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGlj
YXRlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIFZhbHVlIFVuaW9uOjpldmFsdWF0ZSgpIGNvbnN0
CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByaHNOb2Rlcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBOb2RlKiBub2RlID0gcmhzTm9kZXNbaV07Ci0gICAgICAgIGlmIChub2Rlcy5h
ZGQobm9kZSkuc2Vjb25kKQorICAgICAgICBpZiAobm9kZXMuYWRkKG5vZGUpLmlzTmV3RW50cnkp
CiAgICAgICAgICAgICByZXN1bHRTZXQuYXBwZW5kKG5vZGUpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKaW5kZXggZTNkY2U4YzVh
YzRkNmY2Y2U0NzY5OGUyZjNhNzEyNTI2MTIyYzc1OS4uM2MwY2YxNWQ1YzljNzNhYzY1NzhjOWJh
Nzc2Y2U5YmU5MzRhZWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSFRUUExvYWRJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJI
VFRQTG9hZEluZm8uY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBXZWJIVFRQTG9hZEluZm86
OnNldEVuY29kZWREYXRhTGVuZ3RoKGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIAogc3Rh
dGljIHZvaWQgYWRkSGVhZGVyKEhUVFBIZWFkZXJNYXAqIG1hcCwgY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQogewotICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRkKG5hbWUsIHZhbHVlKTsKLSAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsICIgKyBT
dHJpbmcodmFsdWUpOworICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAt
PmFkZChuYW1lLCB2YWx1ZSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gIiwgIiArIFN0cmluZyh2YWx1ZSk7CiB9CiAKIHZv
aWQgV2ViSFRUUExvYWRJbmZvOjphZGRSZXF1ZXN0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBlYzIxMmU1MTc3Y2M1ODYzOGNlMDE3MmM3NWYxMDhk
M2YzNzUyZDNiLi4wN2Q1YTQ1Zjg4Y2U5YzhhMzQzNzQ5MzNjMmI0Mzc2OWU0YTAwNzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCkBAIC0yNTAs
MTAgKzI1MCwxMCBAQCB2b2lkIFdlYlVSTFJlc3BvbnNlOjphZGRIVFRQSGVhZGVyRmllbGQoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmCiAgICAgLy8gRklYTUU6IEFkZCBh
biBhZGRIVFRQSGVhZGVyRmllbGQgbWV0aG9kIHRvIFJlc291cmNlUmVzcG9uc2UuCiAgICAgY29u
c3QgSFRUUEhlYWRlck1hcCYgbWFwID0gbV9wcml2YXRlLT5tX3Jlc291cmNlUmVzcG9uc2UtPmh0
dHBIZWFkZXJGaWVsZHMoKTsKICAgICBTdHJpbmcgdmFsdWVTdHIodmFsdWUpOwotICAgIHBhaXI8
SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9CisgICAgSFRUUEhlYWRlck1h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9CiAgICAgICAgIGNvbnN0X2Nhc3Q8SFRUUEhlYWRlck1hcCo+
KCZtYXApLT5hZGQobmFtZSwgdmFsdWVTdHIpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwgIiArIHZhbHVlU3RyOworICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIs
ICIgKyB2YWx1ZVN0cjsKIH0KIAogdm9pZCBXZWJVUkxSZXNwb25zZTo6Y2xlYXJIVFRQSGVhZGVy
RmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViS2l0Q09NQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAK
aW5kZXggYzQ0NTBmNzQ5ZWUxZmE5NjQ1YTYxMzBlYzhiYzNiZWY5NTQ0YTE0YS4uOWM5Y2MwMjZi
NDdiNGZlYTk2MGM2Mzk4NDZlMGViYTUxYzQ2NTNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViS2l0Q09NQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01B
UEkuY3BwCkBAIC01MSwxMCArNTEsOSBAQCBzdGF0aWMgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+IGNs
YXNzRmFjdG9yeShjb25zdCBDTFNJRCYgY2xzaWQpCiAgICAgdHlwZWRlZiBIYXNoTWFwPENMU0lE
LCBDT01QdHI8SUNsYXNzRmFjdG9yeT4sIENMU0lESGFzaCwgQ0xTSURIYXNoVHJhaXRzPiBGYWN0
b3J5TWFwOwogICAgIHN0YXRpYyBGYWN0b3J5TWFwJiBmYWN0b3JpZXMgPSAqbmV3IEZhY3RvcnlN
YXA7CiAKLSAgICBwYWlyPEZhY3RvcnlNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBmYWN0
b3JpZXMuYWRkKGNsc2lkLCAwKTsKLSAgICBDT01QdHI8SUNsYXNzRmFjdG9yeT4mIGZhY3Rvcnkg
PSByZXN1bHQuZmlyc3QtPnNlY29uZDsKLSAgICBib29sIGFkZGVkID0gcmVzdWx0LnNlY29uZDsK
LSAgICBpZiAoYWRkZWQgJiYgRkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRv
ZihmYWN0b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQorICAgIEZh
Y3RvcnlNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAwKTsKKyAg
ICBDT01QdHI8SUNsYXNzRmFjdG9yeT4mIGZhY3RvcnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZDsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgRkFJTEVEKERsbEdldENsYXNzT2JqZWN0
KGNsc2lkLCBfX3V1aWRvZihmYWN0b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZmYWN0
b3J5KSkpKQogICAgICAgICBmYWN0b3J5ID0gMDsKIAogICAgIHJldHVybiBmYWN0b3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4
IGEyZmZhMGYyNTBiZTg5MDYxMjQwNzFjZDQ4MjlkNzg4YjdiOGFmMzguLjA3MGY0NTgzMDc5Zjdi
NGVlYmZjZjRhMmE4ODg0Nzg2ZDhjNTU0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywg
dHlwZW5hbWUgS2V5VHJhaQogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFsdWUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKCF0ZW1w
SGFzaE1hcC5hZGQoa2V5LCB2YWx1ZSkuc2Vjb25kKSB7CisgICAgICAgICAgICBpZiAoIXRlbXBI
YXNoTWFwLmFkZChrZXksIHZhbHVlKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGhhc2ggbWFwIGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgogICAgICAg
ICAgICAgICAgIGRlY29kZXItPm1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5j
cHAKaW5kZXggM2MyZjE0Y2VkMDNlOGYwOWJmMDUzOTY4ODliMTg0ZWY4Yjg1YzU5ZS4uZjdjMzcy
M2Y3ZWY3ZGQyMjkxZWE1OTE1MDYwMDkzZGMxYzQxOGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBw
cml2YXRlOgogUGFzc1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQogewog
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAg
cGFpcjxTeW5jTWVzc2FnZVN0YXRlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3luY01l
c3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCAwKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCAw
KTsKIAotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQocmVzdWx0LmZp
cnN0LT5zZWNvbmQpOwotICAgICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQpOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
fQogCiAgICAgUmVmUHRyPFN5bmNNZXNzYWdlU3RhdGU+IHN5bmNNZXNzYWdlU3RhdGUgPSBhZG9w
dFJlZihuZXcgU3luY01lc3NhZ2VTdGF0ZShydW5Mb29wKSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5z
ZWNvbmQgPSBzeW5jTWVzc2FnZVN0YXRlLmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gc3luY01lc3NhZ2VTdGF0ZS5nZXQoKTsKIAogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0
YXRlLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRh
YmxlRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25h
cnkuY3BwCmluZGV4IDJmOTA1ZWM2YTEyNDg3MGQ4OTdiYTM3MDA0YmU4Y2FkMmZiMmMxNzQuLmFj
NjliNzZhM2IyNGFmN2VjMTZhZTk3NzM3OWM1MWE2ZTNkZTNkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIE11dGFi
bGVEaWN0aW9uYXJ5Ojp+TXV0YWJsZURpY3Rpb25hcnkoKQogCiBib29sIE11dGFibGVEaWN0aW9u
YXJ5OjphZGQoY29uc3QgU3RyaW5nJiBrZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6
OnBhaXI8TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0
ZW0pOwotICAgIHJldHVybiByZXN1bHQuc2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVtKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50
cnk7CiB9CiAKIGJvb2wgTXV0YWJsZURpY3Rpb25hcnk6OnNldChjb25zdCBTdHJpbmcmIGtleSwg
QVBJT2JqZWN0KiBpdGVtKQogewotICAgIHN0ZDo6cGFpcjxNYXBUeXBlOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbV9tYXAuc2V0KGtleSwgaXRlbSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5zZWNv
bmQ7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0p
OworICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKIH0KIAogdm9pZCBNdXRhYmxlRGljdGlv
bmFyeTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNl
ck1lc3NhZ2VDb2RlcnMuaAppbmRleCA5NjcyZjI4ZGYzN2FhYjkxMWZkYzI4MWJlMmM2ODIwMDA1
YzJhYmYxLi5hY2U3MmZkMmUzM2UzYmMxMTdmYzJmYTQ1NWYxNWQ4Nzc3ZmMwMDNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaApAQCAtMjg1LDggKzI4NSw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShtZXNzYWdlQ29k
ZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAg
ICBzdGQ6OnBhaXI8SW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IG1hcC5zZXQoa2V5LCBlbGVtZW50LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuc2Vjb25kKQorICAgICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25h
cnk6Ok1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxl
YXNlKCkpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5Y2U1NDQwN2U1NjlkNTAz
MGY4MWRhYmExZWZkY2I5OWJmYjBhMGY5Li5lOGRmZDgxNjhjN2EyNzEyNjRhY2Y1YzcxZGQ5MDJj
MGE3NDU1Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMjcxLDE4ICsyNzEsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEJhY2tG
b3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWwKICAgICBN
RVNTQUdFX0NIRUNLX1VSTChvcmlnaW5hbFVSTCk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJs
KTsKIAotICAgIHN0ZDo6cGFpcjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmFkZChpdGVtSUQsIDApOwot
ICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIC8vIE5ldyBpdGVtLgotICAgICAgICBy
ZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmln
aW5hbFVSTCwgdXJsLCB0aXRsZSwgYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmRE
YXRhLnNpemUoKSwgaXRlbUlEKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmFkZChpdGVtSUQsIDApOwor
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgdXJsLCB0
aXRsZSwgYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSwgaXRl
bUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFVwZGF0ZSBleGlzdGluZyBp
dGVtLgotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVS
TCk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPnNldFVSTCh1cmwpOwotICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kLT5zZXRUaXRsZSh0aXRsZSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQt
PnNldEJhY2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERh
dGEuc2l6ZSgpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+c2V0T3JpZ2luYWxVUkwo
b3JpZ2luYWxVUkwpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5zZXRVUkwodXJsKTsK
KyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+c2V0VGl0bGUodGl0bGUpOworICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLT5zZXRCYWNrRm9yd2FyZERhdGEoYmFja0ZvcndhcmREYXRhLmRh
dGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSk7CiB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApp
bmRleCBjZWJiYjMwYzFhZjNiNGQ5YzFkMjM5YjA4ZmJmNGU1YWU3NmVmNDZlLi43ZDczMDVlZGJj
MzBjZGUwOTFmYWZjZjNlYzljMzIwZTU4YzZlMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRP
ckNyZWF0ZShOb2RlKgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBz
dGQ6OnBhaXI8RE9NSGFuZGxlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkb21IYW5k
bGVDYWNoZSgpLmFkZChub2RlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4ocmVzdWx0LmZpcnN0
LT5zZWNvbmQpOworICAgIERPTUhhbmRsZUNhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tSGFu
ZGxlQ2FjaGUoKS5hZGQobm9kZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPihyZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpjcmVhdGUobm9kZSk7Ci0g
ICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBub2RlSGFuZGxlLmdldCgpOworICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gbm9kZUhhbmRsZS5nZXQoKTsKICAgICByZXR1cm4gbm9kZUhhbmRs
ZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5jcHAKaW5kZXggZTk0ZWRmZDM0YjhiODlkMzZlOWQzZTdmZGIwYzQ3YTAwNTI1ZTEx
OS4uMWI3NGYwMTI0MDA4ZGIzYzA3ODI4ZWE2ZjZkMmMwNWFjMDU5YzMwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKQEAgLTQ2LDEyICs0Niwx
MiBAQCBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbgogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgc3RkOjpwYWlyPERPTUhhbmRsZUNhY2hlOjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQocmFuZ2UsIDApOwotICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZT4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIERPTUhhbmRsZUNhY2hlOjpBZGRSZXN1
bHQgcmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQocmFuZ2UsIDApOworICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OmNyZWF0ZShyYW5nZSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSByYW5nZUhh
bmRsZS5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHJhbmdlSGFuZGxlLmdl
dCgpOwogICAgIHJldHVybiByYW5nZUhhbmRsZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyN2U0YzcyZWExZjc0ZDVlMTE1NTQ1NGI4YTM1
YzljYWUzNjlhOGVjLi4yNmU1NDA3NDRiZDUyNzRjOWI2ZGFjZWVhNWJmOTRmYTNhZTA0OTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
Ym9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIG1fbm90aWZpY2F0aW9uTWFwLnNldChub3RpZmljYXRp
b24sIG5vdGlmaWNhdGlvbklEKTsKICAgICBtX25vdGlmaWNhdGlvbklETWFwLnNldChub3RpZmlj
YXRpb25JRCwgbm90aWZpY2F0aW9uKTsKICAgICAKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFw
OjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuZmlyc3Q7Cisg
ICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNv
bnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0
b3I8dWludDY0X3Q+KCkpLml0ZXJhdG9yOwogICAgIGl0LT5zZWNvbmQuYXBwZW5kKG5vdGlmaWNh
dGlvbklEKTsKICAgICAKICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwg
bm90aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlmaWNhdGlvbi0+aWNvblVSTCgpLnN0cmluZygpLCBu
b3RpZmljYXRpb24tPnJlcGxhY2VJZCgpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpLCBw
YWdlLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBjMWJhMDUwY2Y2ZGExZDdhYTE2MTc2MTQzN2Y0YzQ4ZDVhZGUyMWQxLi4yZGZjZGUwODNi
OWMxNGIxYzQxMTI2M2I2NjIzMDM4OWZlMWJmMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTUxOCwxNiArNTE4LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6
Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmCiB7CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0
ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAg
Ly8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3Vz
IGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3YXkuIAotICAgIHN0ZDo6cGFpcjxIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fcGFnZU1hcC5hZGQocGFnZUlELCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAg
ICAgICBBU1NFUlQoIXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0
LT5zZWNvbmQgPSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBwYXJhbWV0ZXJzKTsKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFn
ZU1hcC5hZGQocGFnZUlELCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAg
ICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kID0gV2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwgcGFyYW1ldGVycyk7CiAKICAg
ICAgICAgLy8gQmFsYW5jZWQgYnkgYW4gZW5hYmxlVGVybWluYXRpb24gaW4gcmVtb3ZlV2ViUGFn
ZS4KICAgICAgICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiAgICAgfQogCi0gICAgQVNTRVJUKHJl
c3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQpA
QCAtNzM5LDEzICs3MzksMTMgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBh
Z2VHcm91cCh1aW50NjRfdCBwYWdlR3JvdXBJRCkKIAogV2ViUGFnZUdyb3VwUHJveHkqIFdlYlBy
b2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBwYWdlR3JvdXBEYXRh
KQogewotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3Vw
UHJveHk+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VHcm91cE1hcC5hZGQocGFn
ZUdyb3VwRGF0YS5wYWdlR3JvdXBJRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAg
ICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShwYWdlR3JvdXBEYXRhKTsKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID46OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX3BhZ2VHcm91cE1hcC5hZGQocGFnZUdyb3VwRGF0YS5wYWdlR3JvdXBJRCwg
MCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVCghcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IFdl
YlBhZ2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CiAgICAgfQogCi0gICAgcmV0
dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZC5nZXQoKTsKIH0KIAogc3RhdGljIGJvb2wgY2FuUGx1Z2luSGFuZGxlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDU5ZGVjYTg5NmRkODc1ZDBhYjViMzBk
N2FiZTcwODE4MjMwNDY0Zi4uYjlkZjYzNWQ3YmU3ZmMxODhlZmI3MjE2NGU0ZDM3MjFiNzdjMTY1
OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQg
c2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1
bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToK
KwogMjAxMi0wMy0yOSAgVmluZWV0IENoYXVkaGFyeSAgPHJnZjc0OEBtb3Rvcm9sYS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIGN1c3RvbSBiaW5kaW5ncyBmb3JtIEludGVybmFscy5pZGwgb2YgYXR0
cmlidXRlIHR5cGUgQXJyYXkuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCA4MDk0MWI4ZTA2NzJkYWY0MDU3ZTFmZTA3
ZmEwMzU4ZTBmYWNiYTFjLi4xYjZhNDE1N2M0OGU2NjY1ZDUzOWNhYzhhZDc4ODA5MzIzYzcyMGY1
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2Jq
CiAgICAgICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoX191dWlkb2YoV2ViU2Ny
aXB0V29ybGQpLCAwLCBfX3V1aWRvZih3b3JsZCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
d29ybGQpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQ09N
UHRyPElXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQs
IDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIENPTVB0cjxJV2ViU2NyaXB0V29ybGQ+JiB3b3Js
ZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAg
ICAgICBpZiAoIXdvcmxkU2xvdCAmJiBGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoX191dWlk
b2YoV2ViU2NyaXB0V29ybGQpLCAwLCBfX3V1aWRvZih3b3JsZFNsb3QpLCByZWludGVycHJldF9j
YXN0PHZvaWQqKj4oJndvcmxkU2xvdCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
d29ybGQgPSB3b3JsZFNsb3Q7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDA1ODM0
ODY4NDlkNWM3ZWY1NTRjNjc3YTZjMjNmNGZjOThiOGQxYjkuLmNlYzQzNDRkZDJjZjM0NTZmN2I1
MmQ3N2I5N2QzMGM3ZWQyNTAwZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01
MDQsNyArNTA0LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJ
bklzb2xhdGVkV29ybGQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHUKICAgICBpZiAoIXdvcmxkSUQp
CiAgICAgICAgIHdvcmxkLmFkb3B0KFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4m
IHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+JiB3b3JsZFNsb3QgPSB3
b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBpZiAo
IXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdvcmxkU2xvdC5hZG9wdChXS0J1bmRsZVNjcmlwdFdv
cmxkQ3JlYXRlV29ybGQoKSk7CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134592</attachid>
            <date>2012-03-29 08:22:05 -0700</date>
            <delta_ts>2012-03-29 09:24:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120329122204.patch</filename>
            <type>text/plain</type>
            <size>188833</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDM2ZDUxMzVjOGExNjA2ZTRmNmM1NzEyNWJiM2Q4YWVkMmU1NjA2Li4wZjk1MDJiZTkzNmQ1MTJm
ZGZlZmFmZGFlNjNlNzg3M2VmNzM5NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yOCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBvYmplY3QgZXF1
YWxpdHkgc3BlY3VsYXRpb25zIHNob3VsZCBiZSBzaW1wbGlmaWVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ4MGFiODRkMDc5
NTZmMjUyZjkxYThkNDAwYmU4NDk5NGQ5YzkyYTUuLjFhZTgyNTljMjc5M2QwZTZiMzgzODFlYTU1
YjNkMDQ0NzgwM2QyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDMtMjkgIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBIYXNoVGFibGU8Pjo6YWRkKCkgYW5kIGRlcml2YXRlIGZ1bmN0aW9ucyByZXR1cm4gYW4gQWRk
UmVzdWx0IHN0cnVjdCBpbnN0ZWFkCisgICAgICAgIG9mIGEgcGFpci4gVGhpcyBzdHJ1Y3QgY29u
dGFpbnMgY29udGFpbnMgJ2l0ZXJhdG9yJyBhbmQgJ2lzTmV3RW50cnknIG1lbWJlcnMsIHRoYXQg
YXJlCisgICAgICAgIG1vcmUgcmVhZGFibGUgYXQgY2FsbHNpdGVzIHRoYW4gcHJldmlvdXMgJ2Zp
cnN0JyBhbmQgJ3NlY29uZCcuCisKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAg
ICAgICAgKEhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAq
IHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChIYXNoTWFwKToKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoSGFz
aFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURik6CisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ6Okhhc2hU
YWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChIYXNoVGFibGVBZGRSZXN1bHQpOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6YWRk
KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZFBhc3NpbmdIYXNo
Q29kZSk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChMaXN0SGFzaFNl
dCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUp
OgorICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6SWRlbnRpZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWRE
YXRhLmg6CisgICAgICAgIChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAg
ICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmYzM0NWIyNGQxMWM3ZTQ4
NDg0YmIyZjcxNjIyYzMxYTA0M2RmY2MuLjU3MWE5NWJlNTE0M2UwOTVjZDFkYjk4NzBiNDdlM2Jm
MDIwMDQ3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMTItMDMtMjkgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2
ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRl
c3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
T01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hU
YWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0
LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVu
dGlmaWVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAg
ICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFj
Y3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRR
dWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6
CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxl
Y3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNl
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91
cCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRM
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNh
Y2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdl
c0ZsdXNoZXI6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldERlcml2ZWRGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplQVRTVVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHlsZUNvbnRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbToKKyAgICAgICAgKFdlYkNvcmVSZXBv
cnRUaHJlYWRWaW9sYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjphZGQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAoSFRUUEhlYWRl
ck1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRh
dGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAgICAqIHBsdWdpbnMv
d2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkUGVyY2Vu
dEhlaWdodERlc2NlbmRhbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJl
YWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1h
cDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjppbXBvcnRJdGVtKToK
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHhtbC9YUGF0aFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0
aW9uUGF0aDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6VW5pb246OmV2YWx1YXRlKToKKwogMjAxMi0wMy0yOSAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IG9uIGEgc2luZ2xlIGNsaWNrIGluIFRpbWVsaW5lIG92ZXJ2aWV3LCBtYWtlIGEgbWlu
aW1hbCBzZWxlY3Rpb24gY2VudGVyZWQgYXJvdW5kIGN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBmYWEwNWFlYTkyYjM0NDRkM2JhZWFkMjEwMDM1NmM0ZWQwMmFiMjY3Li43NzE2
YzJjMzQ0OWI4NjdkMmQwMGZlZWVlNjM2NmE0ZWY0YzM3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xp
dmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFz
aE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRv
IHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBzcmMvV2ViSFRU
UExvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRkSGVhZGVyKToKKyAgICAgICAgKiBz
cmMvV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6
YWRkSFRUUEhlYWRlckZpZWxkKToKKwogMjAxMi0wMy0yOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBiZXR0
ZXIgY29tbWVudHMgZm9yIHRoZSBXZWJSVEMgbWV0aG9kcyBpbiBXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGIwZTFhYjk2MzA2ZGZlZjQ2NGQ3Y2MwNWMzOGJhODcy
YmVmOGJiODQuLjViM2Y0YjM0Y2I3MjJlMDI5NjljYTViZDVjYmYyZWEzNzU4MjRhNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRl
IE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29k
ZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aG9zdEZvclBsdWdpbik6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0
YW5jZTo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZCk6CisKIDIwMTItMDMtMjggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291cmNlIGNhbGxiYWNr
LCBzaW5jZSBubwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDdkMGRlOGNjY2Y0NDJiMDEwNmVhYjEyNWM4
MDAzNWMzOGM1NTIxMWQuLmJmYjBmMTRkNDg0YmYxMDYzOTNkYjYxYTE2OGY4ODdjMTZhZjllNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJj
ZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9i
amVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEw
NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAgICog
V2ViS2l0Q09NQVBJLmNwcDoKKyAgICAgICAgKGNsYXNzRmFjdG9yeSk6CisKIDIwMTItMDMtMjgg
IE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgZGlz
cGF0Y2hEaWRMb2FkTWFpblJlc291cmNlIGNhbGxiYWNrLCBzaW5jZSBubwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDcyNjgyMWQwOTc0NWZiODM5MDdiYjE1NDBiNmQ5Yzk2OTE0NjgzMDEuLjBmZTA3OTFhNDliMmVi
NDA3NmE1MDg5M2YzZDM4OWM5ODU5NjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAor
MjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWly
YUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4g
YSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2Yg
YSBwYWlyLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpnZXRPckNyZWF0ZSk6CisgICAgICAg
ICogU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TXV0YWJs
ZURpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6Ok11dGFibGVEaWN0aW9uYXJ5Ojpz
ZXQpOgorICAgICAgICAqIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVzc2FnZURlY29kZXI6OmJhc2VEZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAocGFnZURpZERyYXdUb1BERik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1Zp
ZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRC
YWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViUGFnZUdy
b3VwKToKKwogMjAxMi0wMy0yOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBhIGNyYXNoIGFuZCBhbiBhc3NlcnRpb24gd2hlbiByZWNvdmVyaW5n
IGZyb20gYSB3ZWIgcHJvY2VzcyBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaAppbmRleCA2MTNlNTM4YmM3NWRiMzY5ZjdkZmY3YjY3OTg5MmNiNzAy
YjMyMTM2Li45YWNhMGM3ZTE4Y2E1Y2NjY2VlNzM1OWVhMzkxYzI4MzRiMGExYWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtODksNyArODks
NyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgOiBXZWFrSGFuZGxlT3duZXIgewogICAg
ICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Q2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGVtcHR5Owot
ICAgICAgICAgICAgbV9wcm9wZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkp
LmZpcnN0LT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7CisgICAgICAgICAg
ICBtX3Byb3BlcnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuaXRlcmF0b3It
PnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5k
ZXggNWMyNDlhYmFmNjVlYmJhODkyZjlmNTMwMzM0YzVkYmMwZDk1Yjk5ZC4uMTM1MzRkMDc4YzZi
OWI4NzgxZjA5OTZhNmJiOTg4YjM3ZjRkYmQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2xhc3NSZWYuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBPcGFxdWVK
U0MKIAogT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0
YShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0
YT4mIGNvbnRleHREYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFk
ZCh0aGlzLCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxPcGFxdWVKU0NsYXNz
Q29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFxdWVKU0Ns
YXNzRGF0YS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWNv
bnRleHREYXRhKQogICAgICAgICBjb250ZXh0RGF0YSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKSk7CiAgICAgcmV0dXJuICpj
b250ZXh0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNGE2ZjQ2NTNlYWI4OTJmYzZkYTBkYjkz
Y2I0OWNiMTU3MWE2YWRmYi4uMGYwODU3OTUzMzY0MDRjNWEwNGZhMWU3YmNkYzE2YTAyN2UxZjFk
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIwMCwxMCArMjAwLDEwIEBAIGJvb2wgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmFkZFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50
LCBSZWdpc3RlCiB7CiAgICAgaW50IGluZGV4ID0gbV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpOwog
ICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25s
eSA6IDApOwotICAgIHBhaXI8U3ltYm9sVGFibGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBz
eW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKKyAgICBTeW1ib2xUYWJs
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3
RW50cnkpOwogCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHIwID0gJnJlZ2lz
dGVyRm9yKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldEluZGV4KCkpOworICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQuZ2V0SW5kZXgoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTIxNSw5ICsyMTUsOSBAQCBpbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZEdsb2JhbFZhcihjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQogewogICAgIGludCBpbmRleCA9
IHN5bWJvbFRhYmxlKCkuc2l6ZSgpOwogICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5k
ZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDApOwotICAgIHBhaXI8U3ltYm9sVGFibGU6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBzeW1ib2xUYWJsZSgpLmFkZChpZGVudC5pbXBsKCksIG5l
d0VudHJ5KTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIGluZGV4ID0gcmVzdWx0
LmZpcnN0LT5zZWNvbmQuZ2V0SW5kZXgoKTsKKyAgICBTeW1ib2xUYWJsZTo6QWRkUmVzdWx0IHJl
c3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOworICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIGluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQuZ2V0SW5kZXgoKTsKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKQEAgLTk2OCwyNCArOTY4
LDI0IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90
RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kCiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgU3RyaW5nSW1w
bCogcmVwID0gaWRlbnQuaW1wbCgpOwotICAgIHBhaXI8SWRlbnRpZmllck1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1faWRlbnRpZmllck1hcC5hZGQocmVwLCBtX2NvZGVCbG9jay0+bnVt
YmVyT2ZJZGVudGlmaWVycygpKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgLy8gbmV3IGVudHJ5
CisgICAgSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faWRlbnRpZmllck1hcC5h
ZGQocmVwLCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKKyAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKElkZW50
aWZpZXIobV9nbG9iYWxEYXRhLCByZXApKTsKIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNl
Y29uZDsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudFZhbHVlKEpTVmFsdWUgdikKIHsKICAg
ICBpbnQgaW5kZXggPSBtX25leHRDb25zdGFudE9mZnNldDsKIAotICAgIHBhaXI8SlNWYWx1ZU1h
cDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5j
b2RlKHYpLCBtX25leHRDb25zdGFudE9mZnNldCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsK
KyAgICBKU1ZhbHVlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9qc1ZhbHVlTWFwLmFkZChKU1Zh
bHVlOjplbmNvZGUodiksIG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKKyAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKICAgICAgICAgbV9jb25zdGFudFBvb2xSZWdpc3RlcnMuYXBwZW5kKEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgbV9uZXh0Q29uc3RhbnRPZmZzZXQpOwogICAgICAgICAr
K21fbmV4dENvbnN0YW50T2Zmc2V0OwogICAgICAgICBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQo
SlNWYWx1ZSh2KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGluZGV4ID0gcmVzdWx0LmZpcnN0LT5z
ZWNvbmQ7CisgICAgICAgIGluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICBy
ZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KQEAgLTExMzIsNyArMTEz
Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklE
KiBkc3QsIGRvdWJsZSBudW1iZXIpCiAgICAgLy8gd29yayBjb3JyZWN0bHkgd2l0aCBOYU4gYXMg
YSBrZXkuCiAgICAgaWYgKGlzbmFuKG51bWJlcikgfHwgbnVtYmVyID09IEhhc2hUcmFpdHM8ZG91
YmxlPjo6ZW1wdHlWYWx1ZSgpIHx8IEhhc2hUcmFpdHM8ZG91YmxlPjo6aXNEZWxldGVkVmFsdWUo
bnVtYmVyKSkKICAgICAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwganNOdW1iZXIobnVtYmVyKSk7
Ci0gICAgSlNWYWx1ZSYgdmFsdWVJbk1hcCA9IG1fbnVtYmVyTWFwLmFkZChudW1iZXIsIEpTVmFs
dWUoKSkuZmlyc3QtPnNlY29uZDsKKyAgICBKU1ZhbHVlJiB2YWx1ZUluTWFwID0gbV9udW1iZXJN
YXAuYWRkKG51bWJlciwgSlNWYWx1ZSgpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFs
dWVJbk1hcCkKICAgICAgICAgdmFsdWVJbk1hcCA9IGpzTnVtYmVyKG51bWJlcik7CiAgICAgcmV0
dXJuIGVtaXRMb2FkKGRzdCwgdmFsdWVJbk1hcCk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVnaXN0ZXJJRCogZHN0LCBkb3Vi
bGUgbnVtYmVyKQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVn
aXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIEpTU3Ry
aW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDAp
LmZpcnN0LT5zZWNvbmQ7CisgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFw
LmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXN0
cmluZ0luTWFwKQogICAgICAgICBzdHJpbmdJbk1hcCA9IGpzT3duZWRTdHJpbmcoZ2xvYmFsRGF0
YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwgSlNW
YWx1ZShzdHJpbmdJbk1hcCkpOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgdW5zaWduZWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKIAogSlNTdHJp
bmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewotICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01h
cC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgSlNTdHJpbmcq
JiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRl
cmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXN0cmluZ0luTWFwKSB7CiAgICAgICAgIHN0cmluZ0lu
TWFwID0ganNTdHJpbmcoZ2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CiAgICAg
ICAgIGFkZENvbnN0YW50VmFsdWUoc3RyaW5nSW5NYXApOwpAQCAtMTcxOCwxMCArMTcxOCwxMCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9kZQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdExhenlOZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uQm9keU5vZGUq
IGZ1bmN0aW9uKQogewotICAgIHN0ZDo6cGFpcjxGdW5jdGlvbk9mZnNldE1hcDo6aXRlcmF0b3Is
IGJvb2w+IHB0ciA9IG1fZnVuY3Rpb25PZmZzZXRzLmFkZChmdW5jdGlvbiwgMCk7Ci0gICAgaWYg
KHB0ci5zZWNvbmQpCi0gICAgICAgIHB0ci5maXJzdC0+c2Vjb25kID0gbV9jb2RlQmxvY2stPmFk
ZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24obV9nbG9iYWxEYXRhLCBmdW5jdGlvbikpOwotICAg
IHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIHB0ci5maXJzdC0+c2Vjb25kLCB0
cnVlKTsKKyAgICBGdW5jdGlvbk9mZnNldE1hcDo6QWRkUmVzdWx0IHB0ciA9IG1fZnVuY3Rpb25P
ZmZzZXRzLmFkZChmdW5jdGlvbiwgMCk7CisgICAgaWYgKHB0ci5pc05ld0VudHJ5KQorICAgICAg
ICBwdHIuaXRlcmF0b3ItPnNlY29uZCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFr
ZUZ1bmN0aW9uKG1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24pKTsKKyAgICByZXR1cm4gZW1pdE5ld0Z1
bmN0aW9uSW50ZXJuYWwoZHN0LCBwdHIuaXRlcmF0b3ItPnNlY29uZCwgdHJ1ZSk7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChSZWdp
c3RlcklEKiBkc3QsIHVuc2lnbmVkIGluZGV4LCBib29sIGRvTnVsbENoZWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4
IGJiOTVjYWZiNjgyNjNhOWJmNTEwYWE0ZTQyMjdmNWVhNDNhM2VlOTguLmNkOWRlMjJmMDU5ODc5
OGUyN2IyNzcxYjliODdlNDUxMzZhOTc4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI1Niw5ICsyNTYsOSBAQCBS
ZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBHZXR0ZXJTZXR0ZXJQYWlyIHBhaXIobm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlO
b2RlKj4oMCkpOwotICAgICAgICAgICAgc3RkOjpwYWlyPEdldHRlclNldHRlck1hcDo6aXRlcmF0
b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC5hZGQobm9kZS0+bmFtZSgpLmltcGwoKSwgcGFpcik7Ci0g
ICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQuc2Vjb25kID0gbm9kZTsKKyAgICAgICAgICAgIEdldHRlclNldHRlck1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5hZGQobm9kZS0+bmFtZSgpLmltcGwoKSwgcGFpcik7Cisg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLnNlY29uZCA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBJdGVyYXRlIG92ZXIgdGhlIHJlbWFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBsaXN0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggNDQxYzlhZWQz
MzFjOGIzZWI4ZDc2MjM0MGNiYTkzNTM0ZGM1MzRlYS4uZWRlOGE5YmEyNDhiOWE4OTRiNzkxNzRl
ZDVkMzIwZjg4ZjVjY2IzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGlubGluZSB2b2lkIFJlY29tcGlsZXI6Om9wZXJh
dG9yKCkoSlNDZWxsKiBjZWxsKQogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGFs
cmVhZHkgaW4gdGhlIHNldCAtIGlmIHNvLAogICAgIC8vIHdlJ3ZlIGFscmVhZHkgcmV0cmFuc2xh
dGVkIGl0LCBub3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgaWYgKCFtX2Z1bmN0aW9uRXhlY3V0YWJs
ZXMuYWRkKGV4ZWN1dGFibGUpLnNlY29uZCkKKyAgICBpZiAoIW1fZnVuY3Rpb25FeGVjdXRhYmxl
cy5hZGQoZXhlY3V0YWJsZSkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+SlNHbG9iYWxP
YmplY3Q6Omdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA5NjkxMDFlODdjNTM4Yzk1ZDE3ZDE2NTFhZTJhYzVk
NmQzNmIyNTlkLi5hYzJjM2RiMjFjZjc0YTFhNGQ2NGI0Njg5ZmYxNmZlZmU3YmQxZWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCkBA
IC0zOCwxMiArMzgsMTIgQEAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2Vt
Ymx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKgogICAgIEFTU0VSVChjb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CiAgICAgQVNTRVJU
KGNvZGVCbG9jay0+aml0Q29kZU1hcCgpKTsKICAgICAKLSAgICBzdGQ6OnBhaXI8SGFzaE1hcDxD
b2RlQmxvY2sqLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+OjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9kZWNvZGVkQ29kZU1hcHMuYWRkKGNvZGVCbG9jaywgVmVjdG9yPEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldD4oKSk7CisgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9kZWNv
ZGVkQ29kZU1hcHMuYWRkKGNvZGVCbG9jaywgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dD4oKSk7CiAgICAgCi0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIGNvZGVCbG9jay0+
aml0Q29kZU1hcCgpLT5kZWNvZGUocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+
c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogI2lmIEVO
QUJMRShTQU1QTElOR19GTEFHUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOTI4NTA1NjNhZWQ1MTE1Mzk3Y2FjOGE0MjI3NThiMDc0
Yjg2YTRhMy4uZjBkYTZjYzAxYjcwZTg3OWJiOTA5NzhjOGJhODcwNmZhZDg2OGQxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU1
MSwxMSArNTUxLDExIEBAIHByaXZhdGU6CiAgICAgCiAgICAgTm9kZUluZGV4IGNlbGxDb25zdGFu
dChKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBwYWlyPEhhc2hNYXA8SlNDZWxsKiwgTm9k
ZUluZGV4Pjo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX2NlbGxDb25zdGFudE5vZGVzLmFkZChj
ZWxsLCBOb05vZGUpOwotICAgICAgICBpZiAoaXRlci5zZWNvbmQpCi0gICAgICAgICAgICBpdGVy
LmZpcnN0LT5zZWNvbmQgPSBhZGRUb0dyYXBoKFdlYWtKU0NvbnN0YW50LCBPcEluZm8oY2VsbCkp
OworICAgICAgICBIYXNoTWFwPEpTQ2VsbCosIE5vZGVJbmRleD46OkFkZFJlc3VsdCByZXN1bHQg
PSBtX2NlbGxDb25zdGFudE5vZGVzLmFkZChjZWxsLCBOb05vZGUpOworICAgICAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFk
ZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CiAgICAgICAgIAotICAgICAg
ICByZXR1cm4gaXRlci5maXJzdC0+c2Vjb25kOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgfQogICAgIAogICAgIENvZGVPcmlnaW4gY3VycmVudENvZGVPcmln
aW4oKQpAQCAtMjU5NSwxMCArMjU5NSwxMCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lU3RhY2tFbnRyeShCeXRlQ29kZVBhcnNlciogYnl0ZUNvZGVQYXJzZQogCiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZp
ZXJzKCk7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nSW1wbCogcmVwID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKGkpLmltcGwoKTsKLSAgICAgICAgICAgIHBhaXI8SWRlbnRpZmllck1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2lkZW50aWZpZXJNYXAuYWRk
KHJlcCwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkp
OwotICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICBJZGVudGlmaWVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1faWRlbnRpZmllck1hcC5h
ZGQocmVwLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMo
KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAg
Ynl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKElkZW50aWZpZXIoYnl0
ZUNvZGVQYXJzZXItPm1fZ2xvYmFsRGF0YSwgcmVwKSk7Ci0gICAgICAgICAgICBtX2lkZW50aWZp
ZXJSZW1hcFtpXSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgbV9pZGVudGlm
aWVyUmVtYXBbaV0gPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudFJlZ2lz
dGVycygpOyArK2kpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjb2RlQmxvY2stPmdl
dENvbnN0YW50KGkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CkBAIC0yNjExLDEyICsy
NjExLDEyIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0Vu
dHJ5KEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlCiAgICAgICAgICAgICAgICAgbV9jb25z
dGFudFJlbWFwW2ldID0gYnl0ZUNvZGVQYXJzZXItPm1fZW1wdHlKU1ZhbHVlSW5kZXg7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYWlyPEpT
VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9qc1Zh
bHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBieXRlQ29kZVBhcnNlci0+bV9jb2Rl
QmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3RlcnMoKSArIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgICAgICBK
U1ZhbHVlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYnl0ZUNvZGVQYXJzZXItPm1fanNWYWx1ZU1h
cC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2Nr
LT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCkgKyBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAg
ICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPmFkZENvbnN0YW50KHZhbHVlKTsKICAgICAg
ICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb25zdGFudHMuYXBwZW5kKENvbnN0YW50UmVj
b3JkKCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9jb25zdGFudFJlbWFwW2ldID0g
cmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9j
YWxsc2l0ZUJsb2NrSGVhZE5lZWRzTGlua2luZyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCmluZGV4IDlhZTMyYzRiMGRlMmI2OWUzMzFhNThhZGZjNDBlNDE1MWNh
MmZhOTAuLjgyZjZkZjdkMTJhOGVmMjc0NDA1NTE2ZGU2NmM1NTM2MzhiNGZkZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNTU4LDI0ICszNTU4LDI0IEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCB0b19vYmplY3QpCiAKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBKSVRUaHVua3M6OmN0aVN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgc3RkOjpwYWlyPENUSVN0dWJNYXA6
Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9yLCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYoKSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50
cnkuZmlyc3QtPnNlY29uZCA9IGdlbmVyYXRvcihnbG9iYWxEYXRhKTsKLSAgICByZXR1cm4gZW50
cnkuZmlyc3QtPnNlY29uZDsKKyAgICBDVElTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBtX2N0
aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCkpOworICAgIGlm
IChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0gZ2Vu
ZXJhdG9yKGdsb2JhbERhdGEpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwog
fQogCiBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rp
b24gY29uc3RydWN0b3IpCiB7Ci0gICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlv
biwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7Ci0gICAgaWYgKCFyZXN1bHQuZmlyc3Qt
PnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVF
eGVjdXRhYmxlPigqZ2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxE
YXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKSwgZnVu
Y3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0
aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY29uc3RydWN0b3IsIE5vSW50cmluc2ljKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIEhvc3RGdW5jdGlvblN0dWJNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlvbiwg
UGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7CisgICAgaWYgKCFyZXN1bHQuaXRlcmF0b3It
PnNlY29uZCkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBQYXNzV2VhazxOYXRp
dmVFeGVjdXRhYmxlPigqZ2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9i
YWxEYXRhLCBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKSwg
ZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwgY29uc3RydWN0b3IsIE5vSW50cmluc2ljKSk7CisgICAg
cmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiBOYXRpdmVFeGVjdXRh
YmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRy
aW5zaWMgaW50cmluc2ljKQogewotICAgIHN0ZDo6cGFpcjxIb3N0RnVuY3Rpb25TdHViTWFwOjpp
dGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2hvc3RGdW5jdGlvblN0dWJNYXAtPmFkZChmdW5jdGlv
biwgUGFzc1dlYWs8TmF0aXZlRXhlY3V0YWJsZT4oKSk7Ci0gICAgaWYgKCEqZW50cnkuZmlyc3Qt
PnNlY29uZCkgeworICAgIEhvc3RGdW5jdGlvblN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRh
YmxlPigpKTsKKyAgICBpZiAoISplbnRyeS5pdGVyYXRvci0+c2Vjb25kKSB7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlOwogICAgICAgICBpZiAoZ2VuZXJhdG9yKSB7CiAgICAg
ICAgICAgICBpZiAoZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0zNTg0LDkgKzM1ODQsOSBA
QCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBOYXRpdmVGdQogICAgICAgICAgICAgICAgIGNvZGUgPSBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb2RlID0gSklU
Ojpjb21waWxlQ1RJTmF0aXZlQ2FsbChnbG9iYWxEYXRhLCBmdW5jdGlvbik7Ci0gICAgICAgIGVu
dHJ5LmZpcnN0LT5zZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVFeGVjdXRhYmxlPigqZ2xvYmFsRGF0
YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBjb2RlLCBmdW5jdGlvbiwg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZl
Q29uc3RydWN0KCkpLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgaW50cmluc2ljKSk7
CisgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBQYXNzV2VhazxOYXRpdmVFeGVjdXRh
YmxlPigqZ2xvYmFsRGF0YSwgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBj
b2RlLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
ciwgaW50cmluc2ljKSk7CiAgICAgfQotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kLmdl
dCgpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCiB2b2lk
IEpJVFRodW5rczo6Y2xlYXJIb3N0RnVuY3Rpb25TdHVicygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZjU4ODQ3ZmQyNDY3OGYyZjI1MmMzNTFiNWQ4ZDNiZTll
NTM1YWI3Mi4uNjk0Mzk3N2E4NWE2ZmY3YzkxMWE3MmE0YzgzOWI2OWMxZDc0MzhhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTMyMywxMiArMTMyMywxMiBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVy
dHk8dHJ1ZT4oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsKICAgICAg
ICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKLSAgICAgICAgICAgIHN0ZDo6cGFp
cjxPYmplY3RWYWxpZGF0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcHJvcGVydHlFbnRyeUl0ZXIg
PSBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBj
b250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlFbnRy
eUl0ZXIuc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShwcm9wZXJ0eUVudHJ5
SXRlci5maXJzdC0+c2Vjb25kID09IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOworICAgICAgICAg
ICAgT2JqZWN0VmFsaWRhdGlvbk1hcDo6QWRkUmVzdWx0IHByb3BlcnR5RW50cnkgPSBvYmplY3RW
YWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0Lmdl
dFR5cGUocHJvcGVydHkpKTsKKyAgICAgICAgICAgIGlmICghcHJvcGVydHlFbnRyeS5pc05ld0Vu
dHJ5KSB7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9y
LT5zZWNvbmQgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CiAgICAgICAgICAgICAgICAgZmFp
bElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpID09IFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQpOwotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5
KSAmIHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQpOwotICAgICAgICAgICAgICAgIHBy
b3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQgfD0gY29udGV4dC5nZXRUeXBlKHByb3BlcnR5
KTsKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkg
JiBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICAgICAgICAgIHByb3Bl
cnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVBy
b3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFpbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA3NTEzZDFmMTFmZDQ4OTU4Mjhh
ZjhjYWViZTgwYWRhMTViNWY1N2Y5Li42OGE2OTNhM2U5ZWRlMmE5NzhlN2Y4MTU2NDEzZGIzOGVj
YWNhOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIyMyw3ICsy
MjMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCkKICAgICB7CiAgICAgICAgIGJvb2wgaXNBcmd1bWVudHMgPSBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQ7Ci0gICAgICAgIGJv
b2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0
cmluZygpLmltcGwoKSkuc2Vjb25kICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZh
bCAhPSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOworICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RN
b2RlID0gbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpLmlz
TmV3RW50cnkgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAm
JiAhaXNBcmd1bWVudHM7CiAgICAgICAgIG1faXNWYWxpZFN0cmljdE1vZGUgPSBtX2lzVmFsaWRT
dHJpY3RNb2RlICYmIGlzVmFsaWRTdHJpY3RNb2RlOwogICAgICAgICBpZiAoaXNBcmd1bWVudHMp
CiAgICAgICAgICAgICBzZXRGbGFncyhTaGFkb3dzQXJndW1lbnRzRmxhZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCmluZGV4IGZiYzU3ODdjZTY1NzJh
OGQ4NGQ3YzA0YmY4MjMxN2Y1ODQ4MDZiNjMuLjE4MmJjYzQ2MjAyMmI0ZWMyY2JhYzY4NTVjNTAy
OWY2NGM3MTFmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuY3BwCkBAIC0xMTAsMTEgKzExMCwxMSBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50
aWZpZXI6OmFkZChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIGMpCiAgICAg
aWYgKGl0ZXIgIT0gbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IGl0ZXItPnNlY29uZDsKIAotICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9y
LCBib29sPiBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRkPGNvbnN0IExDaGFyKiwgSWRl
bnRpZmllckNTdHJpbmdUcmFuc2xhdG9yPihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
YykpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gaWRl
bnRpZmllclRhYmxlLmFkZDxjb25zdCBMQ2hhciosIElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRv
cj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGMpKTsKIAogICAgIC8vIElmIHRoZSBz
dHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAg
IC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAg
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZGVkU3RyaW5nID0gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0
UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJlc3VsdC5maXJzdDsKKyAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkZWRTdHJpbmcgPSBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCph
ZGRSZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIAogICAgIGxpdGVyYWxJ
ZGVudGlmaWVyVGFibGUuYWRkKGMsIGFkZGVkU3RyaW5nLmdldCgpKTsKIApAQCAtMTM4LDExICsx
MzgsMTEgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQ4KEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVUNoYXIqIHMKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAgICAgQ2hhckJ1ZmZlcjxVQ2hhcj4gYnVm
ID0ge3MsIGxlbmd0aH07IAotICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9y
LCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUtPmFkZDxDaGFy
QnVmZmVyPFVDaGFyPiwgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvciA+KGJ1Zik7
CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBnbG9iYWxE
YXRhLT5pZGVudGlmaWVyVGFibGUtPmFkZDxDaGFyQnVmZmVyPFVDaGFyPiwgSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyVHJhbnNsYXRvciA+KGJ1Zik7CiAgICAgCiAgICAgLy8gSWYgdGhlIHN0cmlu
ZyBpcyBuZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8g
VGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICByZXR1
cm4gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmlyc3QpIDogKmFkZFJl
c3VsdC5maXJzdDsKKyAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnkgPyBhZG9wdFJlZigq
YWRkUmVzdWx0Lml0ZXJhdG9yKSA6ICphZGRSZXN1bHQuaXRlcmF0b3I7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyVHlwZT4KQEAgLTIxMCw3ICsyMTAsNyBAQCBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZFNsb3dDYXNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
U3RyaW5nSQogICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgIH0KIAotICAgIHJldHVybiAq
Z2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQocikuZmlyc3Q7CisgICAgcmV0dXJuICpn
bG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUtPmFkZChyKS5pdGVyYXRvcjsKIH0KIAogUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGRTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cmluZ0ltcGwqIHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKaW5kZXggYjllNWExODU0NDkyMzk3ODc0NjAyOTJhMjJlYWIzNTJiZjdiOGUyMi4uMTQ5NjA4
NzZiNmY1OGQ4NjdiOWE1ZTM4Mjc1Y2VkMDZjMmFjZTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMTc4LDExICsxNzgsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGlmICghbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0lt
cGw6OmVtcHR5KCk7CiAgICAgICAgIENoYXJCdWZmZXI8VD4gYnVmID0ge3MsIGxlbmd0aH07IAot
ICAgICAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gYWRkUmVz
dWx0ID0gZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8Q2hhckJ1ZmZlcjxUPiwgSWRl
bnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yPFQ+ID4oYnVmKTsKKyAgICAgICAgSGFzaFNldDxT
dHJpbmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVudGlmaWVy
VGFibGUtPmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I8
VD4gPihidWYpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10
cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgICAgIC8vIFRoZSBib29s
ZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgICAgIHJldHVybiBh
ZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0
LmZpcnN0OworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnkgPyBhZG9wdFJlZigq
YWRkUmVzdWx0Lml0ZXJhdG9yKSA6ICphZGRSZXN1bHQuaXRlcmF0b3I7CiAgICAgfQogCiAgICAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlm
aWVyJiBiKQpAQCAtMjQ2LDEwICsyNDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4gPiwgSWRlbnRpZmllck1hcEluZGV4SGFzaFRyYWl0
cz4gSWRlbnRpZmllck1hcDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+
Ci0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gSWRl
bnRpZmllclRhYmxlOjphZGQoVSB2YWx1ZSkKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRk
UmVzdWx0IElkZW50aWZpZXJUYWJsZTo6YWRkKFUgdmFsdWUpCiAgICAgewotICAgICAgICBzdGQ6
OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3Rh
YmxlLmFkZDxVLCBWPih2YWx1ZSk7Ci0gICAgICAgICgqcmVzdWx0LmZpcnN0KS0+c2V0SXNJZGVu
dGlmaWVyKHRydWUpOworICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsKKyAgICAgICAgKCpyZXN1bHQuaXRlcmF0
b3IpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDJjNjIw
YjRhZTU4OWQxZWM5ZTZmNDc2OTJlNDQ2Y2ZhODU2M2Q0MDEuLjBmZmEwNzZjZWFmMDk2MDRmYWJh
YmMwZjY5NTdjMTU2ZjFmMWFlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCkBAIC0xOTUsMTAgKzE5NSwxMCBAQCB2b2lkIEpTQXJyYXk6OmZpbmFsaXplKEpT
Q2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5kZWFsbG9jYXRlU3BhcnNlTWFwKCk7CiB9CiAK
LWlubGluZSBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IFNw
YXJzZUFycmF5VmFsdWVNYXA6OmFkZChKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSkKK2lubGlu
ZSBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRSZXN1bHQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRk
KEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpKQogewogICAgIFNwYXJzZUFycmF5RW50cnkgZW50
cnk7Ci0gICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX21hcC5hZGQoaSwg
ZW50cnkpOworICAgIEFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoaSwgZW50cnkpOwogICAg
IHNpemVfdCBjYXBhY2l0eSA9IG1fbWFwLmNhcGFjaXR5KCk7CiAgICAgaWYgKGNhcGFjaXR5ICE9
IG1fcmVwb3J0ZWRDYXBhY2l0eSkgewogICAgICAgICBIZWFwOjpoZWFwKGFycmF5KS0+cmVwb3J0
RXh0cmFNZW1vcnlDb3N0KChjYXBhY2l0eSAtIG1fcmVwb3J0ZWRDYXBhY2l0eSkgKiAoc2l6ZW9m
KHVuc2lnbmVkKSArIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSk7CkBAIC0yMDksMTQg
KzIwOSwxNCBAQCBpbmxpbmUgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9y
LCBib29sPiBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSgogCiBpbmxpbmUgdm9pZCBTcGFyc2VB
cnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBzdGQ6OnBhaXI8
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGFkZChhcnJheSwg
aSk7Ci0gICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFyc2VBcnJheUVu
dHJ5JiBlbnRyeSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8gc2F2ZSBh
IHNlcGFyYXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBt
YXAuCiAgICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3Bl
cnR5LCBhbmQgdGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90
IHRoZSByaWdodCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCi0gICAgaWYg
KHJlc3VsdC5zZWNvbmQgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAgICByZW1v
dmUocmVzdWx0LmZpcnN0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5p
c0V4dGVuc2libGUoKSkgeworICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAg
ICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjUyLDE0ICsyNTIsMTQgQEAgaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGkKIAogaW5saW5lIGJvb2wg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSog
YXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0g
ICAgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBhZGQoYXJyYXksIGkpOwotICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CisgICAg
U3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAg
IC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJzdCBhbHdheXMgYWRkIHRv
IHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBjYXNlIHRoYXQgdGhpcyBp
cyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKICAgICAvLyBleHRlbnNpYmxl
LCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFn
YWluLgotICAgIGlmIChyZXN1bHQuc2Vjb25kICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsK
LSAgICAgICAgcmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
ICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVy
YXRvcik7CiAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0
aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4i
KTsKICAgICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIEpTQXJyYXk6OmVudGVyRGljdGlv
bmFyeU1vZGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICAvLyBUaGlzIHdpbGwg
YWx3YXlzIGJlIGEgbmV3IGVudHJ5IGluIHRoZSBtYXAsIHNvIG5vIG5lZWQgdG8gY2hlY2sgd2Ug
Y2FuIHdyaXRlLAogICAgICAgICAvLyBhbmQgYXR0cmlidXRlcyBhcmUgZGVmYXVsdCBzbyBubyBu
ZWVkIHRvIHNldCB0aGVtLgogICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICBtYXAtPmFk
ZCh0aGlzLCBpKS5maXJzdC0+c2Vjb25kLnNldChnbG9iYWxEYXRhLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBtYXAtPmFkZCh0aGlzLCBpKS5pdGVyYXRvci0+c2Vjb25kLnNldChnbG9iYWxE
YXRhLCB0aGlzLCB2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCogbmV3UmF3U3RvcmFnZSA9IDA7
CkBAIC00MzAsMTUgKzQzMCwxNSBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93bk51bWVyaWNQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eQogICAgIEFTU0VS
VChtYXApOwogCiAgICAgLy8gMS4gTGV0IGN1cnJlbnQgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5n
IHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBwcm9wZXJ0
eSBuYW1lIFAuCi0gICAgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7Ci0gICAgU3BhcnNlQXJyYXlFbnRy
eSogZW50cnlJbk1hcCA9ICZyZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBTcGFyc2VBcnJheVZh
bHVlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQodGhpcywgaW5kZXgpOworICAgIFNw
YXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAK
ICAgICAvLyAyLiBMZXQgZXh0ZW5zaWJsZSBiZSB0aGUgdmFsdWUgb2YgdGhlIFtbRXh0ZW5zaWJs
ZV1dIGludGVybmFsIHByb3BlcnR5IG9mIE8uCiAgICAgLy8gMy4gSWYgY3VycmVudCBpcyB1bmRl
ZmluZWQgYW5kIGV4dGVuc2libGUgaXMgZmFsc2UsIHRoZW4gUmVqZWN0LgogICAgIC8vIDQuIElm
IGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRlbnNpYmxlIGlzIHRydWUsIHRoZW4KLSAgICBp
ZiAocmVzdWx0LnNlY29uZCkgeworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAg
ICBpZiAoIWlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAgICAgICBtYXAtPnJlbW92ZShyZXN1bHQu
Zmlyc3QpOworICAgICAgICAgICAgbWFwLT5yZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAg
ICAgICAgIHJldHVybiByZWplY3QoZXhlYywgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRv
IGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggYWQ5
OGQ2NjE5MGIwM2NhNTVjODRhMDI4YzQ4OTMwMmI1MWIxOGI5Yi4uODkwZmRmNGYwYTA5NDRlNTg0
YjY2ZjFmNjRlMzU4MTNjOTcyNDMwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgTWFwOjppdGVyYXRvciBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBN
YXA6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIE1hcDo6
QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKCkKICAg
ICAgICAgICAgIDogbV9mbGFncyhOb3JtYWwpCkBAIC04Nyw3ICs4OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIG1heSBtdXRhdGUgdGhlIGNvbnRlbnRzIG9m
IHRoZSBtYXAKICAgICAgICAgdm9pZCBwdXQoRXhlY1N0YXRlKiwgSlNBcnJheSosIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgYm9vbCBwdXREaXJlY3QoRXhl
Y1N0YXRlKiwgSlNBcnJheSosIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsK
LSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoSlNBcnJheSosIHVuc2lnbmVk
KTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOwogICAgICAgICBp
dGVyYXRvciBmaW5kKHVuc2lnbmVkIGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KICAgICAg
ICAgLy8gVGhpcyBzaG91bGQgQVNTRVJUIHRoZSByZW1vdmUgaXMgdmFsaWQgKGNoZWNrIHRoZSBy
ZXN1bHQgb2YgdGhlIGZpbmQpLgogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvciBpdCkgeyBt
X21hcC5yZW1vdmUoaXQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKaW5kZXggOGVmYjQwNjVlMTczOWNmMDVkNWQ5MTY2Yzc1
YmVjZDgwZGRlMzBmYy4uOWJhZTk0MDk3NDAwODUyYWNhMGMwM2Y0Yjc5ZTQyNWJiNGMzMzMzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFByb3BlcnR5TmFtZUFycmF5OjphZGQoU3Ry
aW5nSW1wbCogaWRlbnRpZmllcikKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIG1fc2V0LmFkZChtX2RhdGEtPnByb3BlcnR5TmFt
ZVZlY3RvcigpW2ldLmltcGwoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFtX3NldC5hZGQo
aWRlbnRpZmllcikuc2Vjb25kKQorICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5p
c05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oCmluZGV4
IGUzNDA4YjA4YmIyNmFjOTQ4Zjc3Yzc1ZjJhMzgxNDE3MDg2N2Q0NDEuLjEyN2QwMjhlMGY1NDJm
MjliOWE4MGNhYThiNzExZjI2NmI0OWE1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgaW5saW5lIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6cGVyZm9ybUNoZWNrKCkK
ICAgICBpbnQgc2l6ZSA9IG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNr
VmlzaXRlZE9iamVjdHMuc2l6ZSgpOwogICAgIGlmIChzaXplID49IE1heFNtYWxsVGhyZWFkUmVl
bnRyeURlcHRoICYmIHNpemUgPj0gbV9leGVjLT5nbG9iYWxEYXRhKCkubWF4UmVlbnRyeURlcHRo
KQogICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IoKTsKLSAgICBib29sIGFs
cmVhZHlWaXNpdGVkID0gIW1fZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1JlY3Vyc2lvbkNoZWNr
VmlzaXRlZE9iamVjdHMuYWRkKG1fdGhpc09iamVjdCkuc2Vjb25kOworICAgIGJvb2wgYWxyZWFk
eVZpc2l0ZWQgPSAhbV9leGVjLT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNp
dGVkT2JqZWN0cy5hZGQobV90aGlzT2JqZWN0KS5pc05ld0VudHJ5OwogICAgIGlmIChhbHJlYWR5
VmlzaXRlZCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIFJldHVybiBlbXB0eSBz
dHJpbmcgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgogICAgIHJldHVybiBKU1ZhbHVlKCk7
IC8vIEluZGljYXRlIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAppbmRleCA2ZWU0MTlkYTZhNzhmODEyNjZiZWUyZDZhNGFmNWM1NmQ5ZWQ5NzUz
Li41MmViMWM3NDhkMzQ3MDU1MjMwMWNhZTVlMDMyMTY0OTQzN2E2NzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEwMiwxMiArMTAyLDEyIEBA
IGlubGluZSB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzCiAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgdGhlIFNU
TCBoYXZlIGFuIHN0ZDo6bWFrZV9wYWlyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgcnZhbHVlIHJlZmVy
ZW5jZXMuCiAgICAgLy8gV2hlbiBlaXRoZXIgb2YgdGhlIHBhcmFtZXRlcnMgYXJlIGJpdGZpZWxk
cywgdGhlIEMrKyBjb21waWxlciB3aWxsIHRyeSB0byBiaW5kIHRoZW0gYXMgbHZhbHVlcywgd2hp
Y2ggaXMgaW52YWxpZC4gVG8gd29yayBhcm91bmQgdGhpcywgdXNlIHVuYXJ5ICIrIiB0byBtYWtl
IHRoZSBwYXJhbWV0ZXIgYW4gcnZhbHVlLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyNjEgZm9yIG1vcmUgZGV0YWlscwotICAgIHN0ZDo6cGFp
cjxUcmFuc2l0aW9uTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwKCktPmFkZChnbG9i
YWxEYXRhLCBtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCArc3RydWN0dXJl
LT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKLSAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpIHsKKyAgICBUcmFuc2l0aW9uTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwKCktPmFk
ZChnbG9iYWxEYXRhLCBtYWtlX3BhaXIoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLCArc3Ry
dWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzKSwgc3RydWN0dXJlKTsKKyAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIFRoZXJlIGFscmVhZHkgaXMgYW4gZW50cnkh
IC0gd2Ugc2hvdWxkIG9ubHkgaGl0IHRoaXMgd2hlbiBkZXNwZWNpZnlpbmcuCi0gICAgICAgIEFT
U0VSVChyZXN1bHQuZmlyc3QuZ2V0KCkuc2Vjb25kLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3Vz
KTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci5nZXQoKS5zZWNvbmQtPm1fc3BlY2lm
aWNWYWx1ZUluUHJldmlvdXMpOwogICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9zcGVjaWZp
Y1ZhbHVlSW5QcmV2aW91cyk7Ci0gICAgICAgIG1hcCgpLT5zZXQocmVzdWx0LmZpcnN0LCBzdHJ1
Y3R1cmUpOworICAgICAgICBtYXAoKS0+c2V0KHJlc3VsdC5pdGVyYXRvciwgc3RydWN0dXJlKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKaW5k
ZXggMWJiM2NkNWJiM2Q5YmU5Njc4MzEyOWU4ZTVhZTIxMzBkMmU4YmY3OC4uZjAxYTBjODI2YjFj
NDdmNzc0YmEzNzFiMzMyYzZhZTNkNzRiYzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogICAgICAgICBtYXBf
aXRlcmF0b3IgbV9pdGVyYXRvcjsKICAgICB9OwogCisgICAgdHlwZWRlZiBXVEY6Okhhc2hUYWJs
ZUFkZFJlc3VsdDxpdGVyYXRvcj4gQWRkUmVzdWx0OworCiAgICAgV2Vha0dDTWFwKCkKICAgICB7
CiAgICAgfQpAQCAtMTIxLDE3ICsxMjMsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9t
YXAuZ2V0KGtleSk7CiAgICAgfQogCi0gICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5cGUgdmFs
dWUpCisgICAgQWRkUmVzdWx0IGFkZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IEtl
eVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjx0eXBl
bmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fbWFwLmFkZChrZXksIDApOwot
ICAgICAgICBpZiAoaXRlci5zZWNvbmQpIHsKKyAgICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIDApOworICAgICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKICAgICAgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGdsb2JhbERhdGEuaGVh
cC5oYW5kbGVIZWFwKCktPmFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBpdGVyLmZpcnN0LT5zZWNv
bmQgPSBzbG90OworICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBzbG90Owog
ICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+bWFrZVdlYWsoc2xvdCwgdGhp
cywgRmluYWxpemVyQ2FsbGJhY2s6OmZpbmFsaXplckNvbnRleHRGb3Ioa2V5KSk7CiAgICAgICAg
ICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53cml0ZUJhcnJpZXIoc2xvdCwgdmFsdWUp
OwogICAgICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
aXRlcjsKKyAgICAgICAgLy8gV2Vha0dDTWFwIGV4cG9zZXMgYSBkaWZmZXJlbnQgaXRlcmF0b3Is
IHNvIHdlIG5lZWQgdG8gd3JhcCBpdCBhbmQgY3JlYXRlIG91ciBvd24gQWRkUmVzdWx0LgorICAg
ICAgICByZXR1cm4gQWRkUmVzdWx0KGl0ZXJhdG9yKHJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5p
c05ld0VudHJ5KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzZXQoaXRlcmF0b3IgaXRlciwgRXh0
ZXJuYWxUeXBlIHZhbHVlKQpAQCAtMTQ0LDEyICsxNDcsMTIgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBLZXlUeXBlJiBrZXksIEV4dGVy
bmFsVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8dHlwZW5hbWUgTWFwVHlwZTo6aXRl
cmF0b3IsIGJvb2w+IGl0ZXIgPSBtX21hcC5hZGQoa2V5LCAwKTsKLSAgICAgICAgSGFuZGxlU2xv
dCBzbG90ID0gaXRlci5maXJzdC0+c2Vjb25kOwotICAgICAgICBpZiAoaXRlci5zZWNvbmQpIHsK
KyAgICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIDApOworICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZDsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICBzbG90ID0g
Z2xvYmFsRGF0YS5oZWFwLmhhbmRsZUhlYXAoKS0+YWxsb2NhdGUoKTsKICAgICAgICAgICAgIEhh
bmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCktPm1ha2VXZWFrKHNsb3QsIHRoaXMsIGtleSk7Ci0gICAg
ICAgICAgICBpdGVyLmZpcnN0LT5zZWNvbmQgPSBzbG90OworICAgICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBzbG90OwogICAgICAgICB9CiAgICAgICAgIEhhbmRsZUhlYXA6Omhl
YXBGb3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CiAgICAgICAgICpzbG90ID0g
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRy
ZWVOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgK
aW5kZXggNjBkNTk5MjhhNDY3YTYxN2UyZjNhNzgxZWJlMjAwNTE1ZTM2ZDkwMC4uOWRlMzlhZDhh
Mjk4NjIyYzQzM2E2N2ViNjRhNzIyMDRkZTE5ZTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2NoaWxkcmVuID0gbmV3IE1hcCgpOwogICAgIAogICAgICAgICBQcm9maWxl
VHJlZU5vZGUgbmV3RW50cnk7Ci0gICAgICAgIHBhaXI8TWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOwotICAgICAgICBQ
cm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAg
ICAgIE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2hpbGRyZW4tPmFkZChTdHJpbmcobmFtZSks
IG5ld0VudHJ5KTsKKyAgICAgICAgUHJvZmlsZVRyZWVOb2RlKiBjaGlsZEluTWFwID0gJnJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICArK2NoaWxkSW5NYXAtPm1fY291bnQ7CiAgICAg
ICAgIHJldHVybiBjaGlsZEluTWFwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hDb3VudGVkU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCmluZGV4
IGNhZmIyNjQ5ZWI2MjQ3MWFjYzk2ZjRjZjM3ODllYzA0OWQ3NDAwZWUuLmQ3ZDllNDNhOWE1NWEx
ZmRmYTg4M2Y3ODk3YTEwNzc5OWE1Y2ZmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hh
c2hDb3VudGVkU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1
ZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6Oml0ZXJhdG9yIGl0ZXJh
dG9yOwogICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpjb25zdF9pdGVyYXRvciBj
b25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVz
dWx0IEFkZFJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIEhhc2hDb3VudGVkU2V0KCkge30KICAg
ICAgICAgCkBAIC01Nyw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyBJbmNy
ZWFzZXMgdGhlIGNvdW50IGlmIGFuIGVxdWFsIHZhbHVlIGlzIGFscmVhZHkgcHJlc2VudAogICAg
ICAgICAvLyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiBhbiBpbnRlcmF0b3IgdG8gdGhl
IG5ldyB2YWx1ZSdzIAogICAgICAgICAvLyBsb2NhdGlvbiwgYW5kIGEgYm9vbCB0aGF0IGlzIHRy
dWUgaWYgYW4gbmV3IGVudHJ5IHdhcyBhZGRlZC4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9y
LCBib29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29u
c3QgVmFsdWVUeXBlJik7CiAgICAgICAgIAogICAgICAgICAvLyBSZWR1Y2VzIHRoZSBjb3VudCBv
ZiB0aGUgdmFsdWUsIGFuZCByZW1vdmVzIGl0IGlmIGNvdW50CiAgICAgICAgIC8vIGdvZXMgZG93
biB0byB6ZXJvLCByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIGlzIHJlbW92ZWQuCkBAIC0xNDIs
MTAgKzE0MywxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4K
LSAgICBpbmxpbmUgc3RkOjpwYWlyPHR5cGVuYW1lIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHM+OjppdGVyYXRvciwgYm9vbD4gSGFzaENvdW50ZWRTZXQ8VmFsdWUs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQorICAg
IGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzPjo6QWRkUmVzdWx0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHM+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faW1wbC5hZGQodmFsdWUsIDApOyAKLSAgICAgICAgKyty
ZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IG1faW1wbC5h
ZGQodmFsdWUsIDApOworICAgICAgICArK3Jlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCBiZTdlOWViZWQxMzc5
M2JhNzhlMGNhZmQ3MzkwNWIxZTA0YzMwNTc4Li4yNmE5ZDljNWNiMTU4ZDNhNWZlYjcyZWM1Y2M4
NTBhOGU2MDE2M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIv
U291cmNlL1dURi93dGYvSGFzaE1hcC5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8
SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0
X2l0ZXJhdG9yOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJl
c3VsdCBBZGRSZXN1bHQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgc3dhcChIYXNoTWFw
Jik7CkBAIC05NCwxMiArOTUsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIHJlcGxh
Y2VzIHZhbHVlIGJ1dCBub3Qga2V5IGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKICAgICAgICAg
Ly8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2Nh
dGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFs
dWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChj
b25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAorICAgICAgICBBZGRSZXN1bHQgc2V0
KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICAvLyBkb2VzIG5v
dGhpbmcgaWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUg
aXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAg
Ly8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkg
YWRkZWQKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEtleVR5cGUmLCBN
YXBwZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYs
IE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUm
KTsKICAgICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IpOwpAQCAtMTIyLDEyICsxMjMsMTIgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
VCYpOwogICAgICAgICAvLyAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZhbHVlVHlwZSYsIGNv
bnN0IFQmKTsKICAgICAgICAgLy8gICBzdGF0aWMgdHJhbnNsYXRlKFZhbHVlVHlwZSYsIGNvbnN0
IFQmLCB1bnNpZ25lZCBoYXNoQ29kZSk7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgVCYs
IE1hcHBlZFBhc3NJblR5cGUpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4gQWRkUmVzdWx0IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlw
ZSk7CiAKICAgICAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoY29uc3QgS2V5VHlw
ZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOworICAgICAgICBBZGRSZXN1bHQgaW5saW5l
QWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKIAogICAgICAg
ICBjbGFzcyBIYXNoTWFwS2V5c1Byb3h5IDogcHJpdmF0ZSBIYXNoTWFwIHsKICAgICAgICAgcHVi
bGljOgpAQCAtMzE5LDM0ICszMjAsMzQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcs
IFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+
OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpbmVBZGQoY29uc3Qg
S2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkgCiAgICAgewog
ICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxIYXNoTWFwVHJhbnNsYXRvcjxWYWx1
ZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gPihrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlw
ZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJh
dG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3Vs
dAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIE1h
cHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVzdWx0
LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFw
cGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8g
VGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50
cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRU
cmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAg
TWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVFlQRSwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci0g
ICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4K
KyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3QgVFlQRSYga2V5LCBNYXBwZWRQYXNzSW5UeXBl
IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNzaW5n
SGFzaENvZGU8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPFZhbHVlVHJhaXRzLCBIYXNoVHJhbnNs
YXRvcj4gPihrZXksIHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8
dHlwZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlw
ZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBw
ZWQpCiAgICAgewogICAgICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQu
aAppbmRleCAzM2NiMTRkYWFiNjgyNjg3ZjBhZThlNmMyYzhmMWIyYmFlZjhhYjk2Li4xYjNiMmUy
ODczMzQzOWIxMGJiNzUzYzkwNGQ1NGZmZWM1NWYyNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC01MSw2ICs1
MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGl0ZXJh
dG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hU
YWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAgICAgICB2b2lk
IHN3YXAoSGFzaFNldCYpOwogCkBAIC03Niw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAg
ICAgICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9mIGFuIGludGVyYXRvciB0byB0
aGUgbmV3IHZhbHVlJ3MgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sIHRoYXQgaXMg
dHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2FzIGFkZGVkLgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBhZGQoY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3Qg
VmFsdWVUeXBlJik7CiAKICAgICAgICAgLy8gQW4gYWx0ZXJuYXRlIHZlcnNpb24gb2YgYWRkKCkg
dGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAgICAv
LyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252ZXJz
aW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQpAQCAtODYsNyArODcsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgLy8gICBzdGF0aWMgdHJhbnNsYXRlKFZhbHVlVHlwZSYsIGNvbnN0IFQm
LCB1bnNpZ25lZCBoYXNoQ29kZSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmV2ZXJz
ZSB0aGUgb3JkZXIgb2YgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBzbyB0aGF0IGNhbGxlcnMKICAg
ICAgICAgLy8gY2FuIGp1c3QgcGFzcyB0aGUgdHJhbnNsYXRvciBhbmQgbGV0IHRoZSBjb21waWxl
ciBkZWR1Y2UgVC4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3I+IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJik7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBBZGRSZXN1bHQgYWRk
KGNvbnN0IFQmKTsKIAogICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsKICAg
ICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IpOwpAQCAtMTc3LDE0ICsxNzgsMTQgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoU2V0PFQsIFUsIFY+Ojpp
dGVyYXRvciwgYm9vbD4gSGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFs
dWUpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46OkFkZFJlc3VsdCBIYXNo
U2V0PFQsIFUsIFY+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2ltcGwuYWRkKHZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotICAgIGlubGluZSBw
YWlyPHR5cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0ZXJh
dG9yLCBib29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+OjpBZGRSZXN1bHQKICAgICBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHM+OjphZGQoY29uc3QgVCYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9p
bXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8
SGFzaFRyYW5zbGF0b3I+ID4odmFsdWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggMDU3MjJk
OWM1NTZhNzk3YjQxODgwNzIwZDdjZTMwMDU3ZmI1ZjZiNi4uOWJkNTQ4MmZhY2ViNzIwOTQ0Y2U0
YzUzMTE3NDc0MGJlNDNiYjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxl
LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTI5Niw2ICsyOTYsMTIgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29uc3QgVSYsIGNvbnN0IFQmIHZh
bHVlKSB7IGxvY2F0aW9uID0gdmFsdWU7IH0KICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmF0b3JUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQWRkUmVzdWx0IHsKKyAgICAgICAgSGFz
aFRhYmxlQWRkUmVzdWx0KEl0ZXJhdG9yVHlwZSBpdGVyLCBib29sIGlzTmV3RW50cnkpIDogaXRl
cmF0b3IoaXRlciksIGlzTmV3RW50cnkoaXNOZXdFbnRyeSkgeyB9CisgICAgICAgIEl0ZXJhdG9y
VHlwZSBpdGVyYXRvcjsKKyAgICAgICAgYm9vbCBpc05ld0VudHJ5OworICAgIH07CisKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3Is
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJh
aXRzPgogICAgIGNsYXNzIEhhc2hUYWJsZSB7CiAgICAgcHVibGljOgpAQCAtMzA1LDYgKzMxMSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlZGVmIEtleSBLZXlUeXBlOwogICAgICAg
ICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAgdHlwZWRlZiBJZGVudGl0eUhhc2hU
cmFuc2xhdG9yPEhhc2hGdW5jdGlvbnM+IElkZW50aXR5VHJhbnNsYXRvclR5cGU7CisgICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7CiAKICAgICAg
ICAgSGFzaFRhYmxlKCk7CiAgICAgICAgIH5IYXNoVGFibGUoKSAKQEAgLTMzMCwxMyArMzM3LDEz
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3RhYmxlU2l6ZTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9rZXlDb3VudDsgfQogCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBW
YWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0
cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CisgICAgICAgIEFkZFJlc3VsdCBhZGQo
Y29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5
cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsgfQogCiAgICAgICAgIC8vIEEg
c3BlY2lhbCB2ZXJzaW9uIG9mIGFkZCgpIHRoYXQgZmluZHMgdGhlIG9iamVjdCBieSBoYXNoaW5n
IGFuZCBjb21wYXJpbmcKICAgICAgICAgLy8gd2l0aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lk
IHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBpZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKICAg
ICAgICAgLy8gaW4gdGhlIHRhYmxlLgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gcGFpcjxpdGVy
YXRvciwgYm9vbD4gYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEm
KTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEV4dHJhPiBBZGRSZXN1bHQgYWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtl
eSwgY29uc3QgRXh0cmEmKTsKIAogICAgICAgICBpdGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUm
IGtleSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9CiAgICAg
ICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVy
biBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KQEAgLTY2NSw3ICs2NzIsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPgotICAgIGlubGluZSBwYWly
PHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+IEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWRkKGNvbnN0
IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoVGFi
bGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz46OkFkZFJlc3VsdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZChjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBl
eHRyYSkKICAgICB7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihrZXkpOwogCkBA
IC03MDAsNyArNzA3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRv
cjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkp
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkKICAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlZEVudHJ5ID0gZW50cnk7CkBAIC03MTEsNyArNzE4LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQogICAgICAgICAg
ICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsKICAgICAgICAgICAgICAgICBlbHNlIGlm
IChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29k
SXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBZGRS
ZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFsc2UpOwogICAgICAgICAgICAg
fQogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCiAgICAgICAgICAgICArK3Byb2JlQ291bnQ7CkBA
IC03MzgsMTkgKzc0NSwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIC8vIGZvbGxv
dyBhIHBpdm90IGVudHJ5IGFuZCByZXR1cm4gdGhlIG5ldyBwb3NpdGlvbi4KICAgICAgICAgICAg
IEtleVR5cGUgZW50ZXJlZEtleSA9IEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpOwogICAgICAg
ICAgICAgZXhwYW5kKCk7Ci0gICAgICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBwID0gc3Rk
OjptYWtlX3BhaXIoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQo
cC5maXJzdCAhPSBlbmQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgICAgIEFk
ZFJlc3VsdCByZXN1bHQoZmluZChlbnRlcmVkS2V5KSwgdHJ1ZSk7CisgICAgICAgICAgICBBU1NF
UlQocmVzdWx0Lml0ZXJhdG9yICE9IGVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFr
ZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUg
RXh0cmE+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppdGVyYXRvciwgYm9v
bD4gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRy
YSYgZXh0cmEpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJh
KQogICAgIHsKICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKQEAgLTc2
OCw3ICs3NzUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdW5zaWduZWQgaCA9IGxvb2t1
cFJlc3VsdC5zZWNvbmQ7CiAgICAgICAgIAogICAgICAgICBpZiAoZm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpLCBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCpl
bnRyeSkpIHsKICAgICAgICAgICAgIGluaXRpYWxpemVCdWNrZXQoKmVudHJ5KTsKQEAgLTc4Mywx
NCArNzkwLDE0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgLy8gZm9sbG93IGEgcGl2
b3QgZW50cnkgYW5kIHJldHVybiB0aGUgbmV3IHBvc2l0aW9uLgogICAgICAgICAgICAgS2V5VHlw
ZSBlbnRlcmVkS2V5ID0gRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAgICBl
eHBhbmQoKTsKLSAgICAgICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2Vf
cGFpcihmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVChwLmZpcnN0
ICE9IGVuZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICAgICAgQWRkUmVzdWx0
IHJlc3VsdChmaW5kKGVudGVyZWRLZXkpLCB0cnVlKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQuaXRlcmF0b3IgIT0gZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRy
dWUpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRy
eSksIHRydWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUg
VmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9MaXN0SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAppbmRleCA3OTk0
NjZmYTk4YzZkZjdlMjViMjA2N2MyYTIwMGY0Nzk0NzNhYzEyLi4yMWUzOGQ4M2FiNDcwNjc4MWMz
N2IxNTFmMWRjZTExMjI0OTMyYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFz
aFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKQEAgLTgxLDYgKzgxLDgg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRDb25zdFJldmVy
c2VJdGVyYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRDb25zdFJldmVy
c2VJdGVyYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPjsKIAorICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUFkZFJlc3VsdDxpdGVyYXRvcj4gQWRkUmVzdWx0OworCiAgICAg
ICAgIExpc3RIYXNoU2V0KCk7CiAgICAgICAgIExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0
Jik7CiAgICAgICAgIExpc3RIYXNoU2V0JiBvcGVyYXRvcj0oY29uc3QgTGlzdEhhc2hTZXQmKTsK
QEAgLTEyNCwxMCArMTI2LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIC8vIFRoZSBy
ZXR1cm4gdmFsdWUgb2YgYWRkIGlzIGEgcGFpciBvZiBhbiBpdGVyYXRvciB0byB0aGUgbmV3IHZh
bHVlJ3MgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sIHRoYXQgaXMgdHJ1ZSBpZiBh
biBuZXcgZW50cnkgd2FzIGFkZGVkLgotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQo
Y29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgVmFsdWVUeXBl
Jik7CiAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0QmVmb3JlKGNvbnN0IFZh
bHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpOwotICAgICAg
ICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZh
bHVlVHlwZSYpOworICAgICAgICBBZGRSZXN1bHQgaW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlw
ZSYgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpOworICAgICAgICBBZGRS
ZXN1bHQgaW5zZXJ0QmVmb3JlKGl0ZXJhdG9yLCBjb25zdCBWYWx1ZVR5cGUmKTsKIAogICAgICAg
ICB2b2lkIHJlbW92ZShjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAgICAgdm9pZCByZW1vdmUoaXRl
cmF0b3IpOwpAQCAtNjk1LDI2ICs2OTcsMjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBV
PgotICAgIHBhaXI8dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojpp
dGVyYXRvciwgYm9vbD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjphZGQoY29u
c3QgVmFsdWVUeXBlICZ2YWx1ZSkKKyAgICB0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVD
YXBhY2l0eSwgVT46OkFkZFJlc3VsdCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46
OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjx0eXBlbmFt
ZSBJbXBsVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8
QmFzZVRyYW5zbGF0b3I+KHZhbHVlLCBtX2FsbG9jYXRvci5nZXQoKSk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgYXBwZW5kTm9kZSgqcmVzdWx0LmZpcnN0KTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRvcigqcmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCk7CisgICAgICAgIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG1fYWxsb2Nh
dG9yLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAg
YXBwZW5kTm9kZSgqcmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdCht
YWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwg
VT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omlu
c2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKKyAgICB0
eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OkFkZFJlc3VsdCBMaXN0
SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIHBhaXI8dHlwZW5hbWUg
SW1wbFR5cGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJh
c2VUcmFuc2xhdG9yPihuZXdWYWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOwotICAgICAgICBpZiAo
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAq
cmVzdWx0LmZpcnN0KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VJdGVyYXRv
cigqcmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7Ci0KKyAgICAgICAgdHlwZW5hbWUgSW1w
bFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xh
dG9yPihuZXdWYWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpCisgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGl0Lm5vZGUoKSwgKnJlc3Vs
dC5pdGVyYXRvcik7CisgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1
bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotICAgIHBhaXI8
dHlwZW5hbWUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppdGVyYXRvciwgYm9v
bD4gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoY29uc3Qg
VmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkKKyAgICB0
eXBlbmFtZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OkFkZFJlc3VsdCBMaXN0
SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5
cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGluc2VydEJlZm9yZShmaW5kKGJlZm9yZVZhbHVlKSwgbmV3VmFsdWUpOyAKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKaW5kZXggZjQ4YTU5Y2Y2MzcwMjI2NDA0MjUyMDNjOGU0
MmQxNmJlZDhiNTE3My4uMGFmMzZiZTYwMjdmYjUwMGJiZmVhNWMyMWRjNmUwOGNkZjAxOWY4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1JlZlB0ckhhc2hNYXAuaApAQCAtNjAsNiArNjAsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhh
c2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9p
dGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1
bHQgQWRkUmVzdWx0OwogCiAgICAgICAgIHZvaWQgc3dhcChIYXNoTWFwJik7CiAKQEAgLTg2LDE0
ICs4NywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0
IG5vdCBrZXkgaWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFs
dWUgaXMgYSBwYWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAg
ICAgLy8gYW5kIGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFs
bHkgYWRkZWQKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUm
LCBNYXBwZWRQYXNzSW5UeXBlKTsgCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHNldChS
YXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBzZXQoY29u
c3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOworICAgICAgICBBZGRSZXN1bHQgc2V0KFJh
d0tleVR5cGUsIE1hcHBlZFBhc3NJblR5cGUpOwogCiAgICAgICAgIC8vIGRvZXMgbm90aGluZyBp
ZiBrZXkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBh
aXIgb2YgdGhlIGl0ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQg
YSBib29sZWFuIHRoYXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAot
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBh
c3NJblR5cGUpOyAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKFJhd0tleVR5cGUs
IE1hcHBlZFBhc3NJblR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBl
JiwgTWFwcGVkUGFzc0luVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoUmF3S2V5VHlwZSwg
TWFwcGVkUGFzc0luVHlwZSk7CiAKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYp
OwogICAgICAgICB2b2lkIHJlbW92ZShSYXdLZXlUeXBlKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgTWFwcGVkUGFzc091dFR5cGUgdGFrZShSYXdLZXlUeXBl
KTsgLy8gZWZmaWNpZW50IGNvbWJpbmF0aW9uIG9mIGdldCB3aXRoIHJlbW92ZQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5saW5lQWRkKGNvbnN0IEtleVR5
cGUmLCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwg
Ym9vbD4gaW5saW5lQWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwor
ICAgICAgICBBZGRSZXN1bHQgaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5S
ZWZlcmVuY2VUeXBlKTsKKyAgICAgICAgQWRkUmVzdWx0IGlubGluZUFkZChSYXdLZXlUeXBlLCBN
YXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlKTsKIAogICAgICAgICBIYXNoVGFibGVUeXBlIG1faW1w
bDsKICAgICB9OwpAQCAtMTk1LDUyICsxOTYsNTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0
cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIGlubGluZSB0eXBlbmFtZSBI
YXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVm
UHRyPFQ+LCBVLCBWLCBXLCBYPjo6aW5saW5lQWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVk
UGFzc0luUmVmZXJlbmNlVHlwZSBtYXBwZWQpIAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1w
bC50ZW1wbGF0ZSBhZGQ8VHJhbnNsYXRvcj4oa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5
cGVuYW1lIFg+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUs
IFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxS
ZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46OmlubGluZUFkZChSYXdLZXlUeXBlIGtleSwgTWFwcGVkUGFzc0luUmVmZXJl
bmNlVHlwZSBtYXBwZWQpIAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBh
ZGQ8VHJhbnNsYXRvcj4oa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0g
ICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9y
LCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRk
UmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoY29uc3QgS2V5
VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgCiAgICAgewotICAgICAgICBwYWly
PGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwotICAgICAg
ICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGlubGlu
ZUFkZChrZXksIG1hcHBlZCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBo
YXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgotICAgICAg
ICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5maXJzdC0+c2Vjb25kKTsK
KyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQuaXRlcmF0b3It
PnNlY29uZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYs
IFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6c2V0KFJhd0tleVR5cGUga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkgCiAgICAgewot
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBw
ZWQpOwotICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgQWRkUmVzdWx0IHJl
c3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpIHsKICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBh
biBleGlzdGluZyBoYXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZh
bHVlLgotICAgICAgICAgICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKKyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQ
dHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFw
PFJlZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+
LCBVLCBWLCBXLCBYPjo6YWRkKGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBt
YXBwZWQpCiAgICAgewogICAgICAgICByZXR1cm4gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8
VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFJl
ZlB0cjxUPiwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBV
LCBWLCBXLCBYPjo6YWRkKFJhd0tleVR5cGUga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgK
aW5kZXggNTliYzRhMjlhOWQ4ZDc3NTFiMmRkMWQwMzFiODUyM2M2NWI2MzQ3ZC4uNWU3YTQ4NGNk
ODc2NmJjYWYyMmNhNGM5M2RkY2U5NzBkZDJiYTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvU3BlY3RydW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00Miw5ICs0
Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFkZChjb25zdCBUJiBrZXksIHVuc2lnbmVk
IGxvbmcgY291bnQgPSAxKQogICAgIHsKLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNl
Y29uZCkKLSAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9IGNvdW50OworICAgICAg
ICB0eXBlbmFtZSBIYXNoTWFwPFQsIHVuc2lnbmVkIGxvbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9tYXAuYWRkKGtleSwgY291bnQpOworICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gY291bnQ7CiAgICAgfQogICAg
IAogICAgIHVuc2lnbmVkIGxvbmcgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwIGIvU291cmNlL1dURi93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAKaW5kZXggZWM1ZGU3MjIwMGY1NzVkNzc0Y2MyMGQ5MWE5MzhlOWQ5ZDlmMDI2
OS4uM2E5MDNmODk1ZTBmOTY1ZjQ2NGZlY2Y4YjA5Y2JhOTM3MjQwYmQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvV1RG
VGhyZWFkRGF0YS5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCBJZGVudGlmaWVyVGFibGU6On5JZGVu
dGlmaWVyVGFibGUoKQogICAgICAgICAoKml0ZXIpLT5zZXRJc0lkZW50aWZpZXIoZmFsc2UpOwog
fQogCi1zdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVu
dGlmaWVyVGFibGU6OmFkZChTdHJpbmdJbXBsKiB2YWx1ZSkKK0hhc2hTZXQ8U3RyaW5nSW1wbCo+
OjpBZGRSZXN1bHQgSWRlbnRpZmllclRhYmxlOjphZGQoU3RyaW5nSW1wbCogdmFsdWUpCiB7Ci0g
ICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0
ID0gbV90YWJsZS5hZGQodmFsdWUpOwotICAgICgqcmVzdWx0LmZpcnN0KS0+c2V0SXNJZGVudGlm
aWVyKHRydWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV90YWJsZS5hZGQodmFsdWUpOworICAgICgqcmVzdWx0Lml0ZXJhdG9yKS0+c2V0SXNJZGVudGlm
aWVyKHRydWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1dURlRocmVhZERhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaApp
bmRleCBiMDJkMTBkN2M4MTkxYTdhNWZlN2I1ZTdhNzI0NDJmNTY4ZmQ0NjdkLi5kYmM1YmE2YWM1
NGY4NThhNzI0OGI3M2NjMDk2OTc2OWYwOWEzYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9XVEZUaHJlYWREYXRhLmgKKysrIGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCkBA
IC00Niw5ICs0Niw5IEBAIGNsYXNzIElkZW50aWZpZXJUYWJsZSB7CiBwdWJsaWM6CiAgICAgfklk
ZW50aWZpZXJUYWJsZSgpOwogCi0gICAgc3RkOjpwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+Ojpp
dGVyYXRvciwgYm9vbD4gYWRkKFN0cmluZ0ltcGwqIHZhbHVlKTsKKyAgICBIYXNoU2V0PFN0cmlu
Z0ltcGwqPjo6QWRkUmVzdWx0IGFkZChTdHJpbmdJbXBsKiB2YWx1ZSk7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBs
Kj46Oml0ZXJhdG9yLCBib29sPiBhZGQoVSB2YWx1ZSk7CisgICAgSGFzaFNldDxTdHJpbmdJbXBs
Kj46OkFkZFJlc3VsdCBhZGQoVSB2YWx1ZSk7CiAKICAgICBib29sIHJlbW92ZShTdHJpbmdJbXBs
KiByKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBkNzc1ZTdi
Yjk0ZmZlMDYzNmRmMzNiYTJkZTNlZDVjMzVjOWY5MWRjLi42NmJkNzg1MWEwMDUyZGM0ZTE5NmMx
YmI0MGE1ZDNhODEzOTVlNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBA
IC03OCwxMSArNzgsMTEgQEAgc3RhdGljIGlubGluZSBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgc3Ry
aW5nVGFibGUoKQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+
CiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdUYWJsZShj
b25zdCBUJiB2YWx1ZSkKIHsKLSAgICBwYWlyPEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gc3RyaW5nVGFibGUoKS5hZGQ8VCwgSGFzaFRyYW5zbGF0b3I+
KHZhbHVlKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IHN0cmluZ1RhYmxlKCkuYWRkPFQsIEhhc2hUcmFuc2xhdG9yPih2YWx1ZSk7CiAKICAgICAvLyBJ
ZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBp
dC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNv
LgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJz
dCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/
IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDogKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0K
IAogc3RydWN0IENTdHJpbmdUcmFuc2xhdG9yIHsKQEAgLTMwMCw3ICszMDAsNyBAQCBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCogcikK
ICAgICBpZiAoIXItPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHko
KTsKIAotICAgIFN0cmluZ0ltcGwqIHJlc3VsdCA9ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5maXJz
dDsKKyAgICBTdHJpbmdJbXBsKiByZXN1bHQgPSAqc3RyaW5nVGFibGUoKS5hZGQocikuaXRlcmF0
b3I7CiAgICAgaWYgKHJlc3VsdCA9PSByKQogICAgICAgICByLT5zZXRJc0F0b21pYyh0cnVlKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKaW5kZXgg
NDE1OGM5OGQ3ZmY4NzQwMzhlNTE3YjYwZDE5NzNjNzI4ZGNmYWI3OS4uODM3YjhmYmQyMjA1YWRj
OTc0ODZkZDNmMGU4ZjAyMDczODBmOGQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6YWNx
dWlyZUxvY2soU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIENvb3JkaW5hdGlvbklu
Zm9NYXA6Oml0ZXJhdG9yIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29vcmRpbmF0aW9u
SW5mb01hcC5maW5kKGRiSWRlbnRpZmllcik7CiAgICAgaWYgKGNvb3JkaW5hdGlvbkluZm9JdGVy
YXRvciA9PSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuZW5kKCkpIHsKICAgICAgICAgLy8gTm8gcGVu
ZGluZyB0cmFuc2FjdGlvbnMgZm9yIHRoaXMgREIKLSAgICAgICAgY29vcmRpbmF0aW9uSW5mb0l0
ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmFkZChkYklkZW50aWZpZXIsIENvb3JkaW5h
dGlvbkluZm8oKSkuZmlyc3Q7CisgICAgICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1f
Y29vcmRpbmF0aW9uSW5mb01hcC5hZGQoZGJJZGVudGlmaWVyLCBDb29yZGluYXRpb25JbmZvKCkp
Lml0ZXJhdG9yOwogICAgIH0KIAogICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBjb29yZGlu
YXRpb25JbmZvSXRlcmF0b3ItPnNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcAppbmRleCAy
YTA5NjI3OThiYmVmMzI1NGQwMTc1ODM4NTcxYmUzYjQxMjcxNjY3Li4xMGIwOGEyYjcyM2NkYTI5
MjBkNDNkZWZhMThjMzExNWVmYTFiMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHZvaWQgUXVvdGFUcmFja2VyOjp1cGRhdGVEYXRhYmFzZVNpemUoCiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGRhdGFiYXNlU2l6ZSkKIHsKICAgICBNdXRleExvY2tlciBsb2Nr
RGF0YShtX2RhdGFHdWFyZCk7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFNpemVNYXA+OjppdGVyYXRv
ciBpdCA9IG1fZGF0YWJhc2VTaXplcy5hZGQob3JpZ2luSWRlbnRpZmllciwgU2l6ZU1hcCgpKS5m
aXJzdDsKKyAgICBIYXNoTWFwPFN0cmluZywgU2l6ZU1hcD46Oml0ZXJhdG9yIGl0ID0gbV9kYXRh
YmFzZVNpemVzLmFkZChvcmlnaW5JZGVudGlmaWVyLCBTaXplTWFwKCkpLml0ZXJhdG9yOwogICAg
IGl0LT5zZWNvbmQuc2V0KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VTaXplKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAppbmRl
eCAyYzBlOTQ4MzZmM2M2NDcyMjIyYWI2NzJkNDMzNzc3ZjNlMWE2MDc3Li4yMTZiOTQ1YzQ5Yjkx
MWUzZjQ1ZWZlNWE3ZTRjMTMyOTZmMzBlYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgSlNDOjpIYXNoVGFibGUqLCBKU0M6Okhhc2hUYWJs
ZT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHN0YXRpY1RhYmxlKTsKICAgICAgICAgaWYg
KGl0ZXIgIT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gJml0ZXItPnNlY29uZDsK
LSAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpTQzo6SGFzaFRhYmxlKCpz
dGF0aWNUYWJsZSkpLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0
YXRpY1RhYmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5pdGVyYXRvci0+c2Vjb25k
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCmluZGV4IDAwNTBhNzMxNTdmZGZjYjVkZTA3NjFmMzI1ZjZmZDE1YWMwMDA3NmQu
LmMxMWY2MDEwMzhhNjYwMDY5YmFhNWQ5OTI2Y2MyNWQyYmVkMDQ4NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIFN0
cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1CiB7CiAgICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVy
ZXMgPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZXMoKTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZXMu
Y29udGFpbnMoY2xhc3NJbmZvKSk7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5m
bywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKSkuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICByZXR1cm4g
c3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+
c2Vjb25kLmdldCgpOwogfQogCiBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBiMDQ5ZDliMmNhZTUwY2IzYzMzMTZmN2Iz
ODIwMGQ4Yzg3ZmQ2MGRkLi43ZWViYzc3ZDQwMTFiODQyOGUxYTM3ZGRiOGJjNDk0NmIzZjdlZmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMTQyLDgg
KzE0Miw4IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgICAgIGlmIChzZXRJ
bmxpbmVDYWNoZWRXcmFwcGVyKHdvcmxkLCBkb21PYmplY3QsIHdyYXBwZXIpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBKU0M6OlBhc3NXZWFrPEpTRE9NV3JhcHBlcj4gcGFzc1dlYWso
KndvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIHdyYXBwZXJPd25lcih3b3JsZCwgZG9tT2Jq
ZWN0KSwgd3JhcHBlckNvbnRleHQod29ybGQsIGRvbU9iamVjdCkpOwotICAgICAgICBwYWlyPERP
TU9iamVjdFdyYXBwZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSB3b3JsZC0+bV93cmFw
cGVycy5hZGQoZG9tT2JqZWN0LCBwYXNzV2Vhayk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgRE9NT2JqZWN0V3JhcHBlck1hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IHdvcmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmplY3QsIHBhc3NXZWFrKTsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSB2b2lkIHVuY2FjaGVX
cmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QsIEpTRE9N
V3JhcHBlciogd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCmluZGV4IGFkY2QzODg5ZmYyNzg3ZTBmYTRhMjIwZGFjNjQ3NjU1NzZkODUx
MTAuLjc0ZjM1YjBiNzkyYzFjMDYwMzdkMWFkZWYzYjIzMTM2NThhOTJkYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtOTUsNyArOTUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0cnVj
dG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKGV4ZWMsIENvbnN0cnVjdG9yQ2xhc3M6OmNy
ZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwg
Y29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogICAgICAgICBB
U1NFUlQoIWNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25z
dHJ1Y3RvcnMoKS5jb250YWlucygmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvKSk7CiAgICAgICAg
IEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IHRlbXA7Ci0gICAgICAgIGNvbnN0X2Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQo
JkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywgdGVtcCkuZmlyc3QtPnNlY29uZC5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgY29uc3Rf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFk
ZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1wKS5pdGVyYXRvci0+c2Vjb25kLnNldChl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IpOwogICAgICAgICBy
ZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBjOGYxNmY1YTk2MTY1YmU4
ZTEzZGIyYmViNWVhYjE2MDgzN2U5MjBjLi5iZGVlNDY4N2Q2YzA0MjExNjNlZTg5YzNiMDEwYzZh
NGI4ZTdkZWVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCB2b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBh
Z2UqIHBhZwogICAgIEFTU0VSVF9BUkcobGlzdGVuZXIsIGxpc3RlbmVyKTsKICAgICBBU1NFUlRf
QVJHKHBhZ2UsIHBhZ2UpOwogCi0gICAgcGFpcjxQYWdlTGlzdGVuZXJzTWFwOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmFkZChwYWdlLCAwKTsKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgTGlzdGVu
ZXJTZXQ7CisgICAgUGFnZUxpc3RlbmVyc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZUxp
c3RlbmVyc01hcC5hZGQocGFnZSwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsKIAotICAgIExp
c3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBMaXN0ZW5l
clNldCogbGlzdGVuZXJzID0gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgbGlzdGVuZXJz
LT5hZGQobGlzdGVuZXIpOwogCiAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5k
ZXggZjQ5NWNlZGM4NjM5ZjBmZjNhYzk3Y2MzNjNjNjM3YWM0MWNkMzI1MC4uMTBkZWQ3MDA3MDc5
NDAyM2RjN2VkMjEyOTlmY2ZiMjQ4NjEyMTdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU2NyaXB0QnJlYQogICAgICAgICByZXR1cm4gIiI7CiAgICAgU291cmNlSWRUb0JyZWFr
cG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291
cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgp
KQotICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVl
LCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLmZpcnN0OworICAgICAgICBpdCA9IG1fc291cmNlSWRU
b0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0
ZXJhdG9yOwogICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGlu
ZU51bWJlciArIDEpKQogICAgICAgICByZXR1cm4gIiI7CiAgICAgaXQtPnNlY29uZC5zZXQoc2Ny
aXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCA5NmYwYTgxNDg3NDEzN2Y1MjViYzQ5NTM2ZTMxNDJmYTE4ODIyZWRlLi43YWMxNTVjY2U2
Y2MyYTRkZDlhYjdiYWM3N2QxNTA5NDhlYWZjMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM5MiwxMyArMzky
LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdGFydE9iamVjdEludGVybmFsKEpTT2JqZWN0KiBv
YmplY3QpCiAgICAgewogICAgICAgICAvLyBSZWNvcmQgb2JqZWN0IGZvciBncmFwaCByZWNvbnN0
cnVjdGlvbgotICAgICAgICBwYWlyPE9iamVjdFBvb2w6Oml0ZXJhdG9yLCBib29sPiBpdGVyID0g
bV9vYmplY3RQb29sLmFkZChvYmplY3QsIG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAgICBP
YmplY3RQb29sOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9vYmplY3RQb29sLmFkZChvYmplY3Qs
IG1fb2JqZWN0UG9vbC5zaXplKCkpOwogICAgICAgICAKICAgICAgICAgLy8gSGFuZGxlIGR1cGxp
Y2F0ZSByZWZlcmVuY2VzCi0gICAgICAgIGlmICghaXRlci5zZWNvbmQpIHsKKyAgICAgICAgaWYg
KCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgd3JpdGUoT2JqZWN0UmVmZXJl
bmNlVGFnKTsKLSAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihpdGVyLmZp
cnN0LT5zZWNvbmQpIDwgbV9vYmplY3RQb29sLnNpemUoKSk7Ci0gICAgICAgICAgICB3cml0ZU9i
amVjdEluZGV4KGl0ZXIuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpIDwgbV9vYmplY3RQb29s
LnNpemUoKSk7CisgICAgICAgICAgICB3cml0ZU9iamVjdEluZGV4KGFkZFJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTcyNiwxMCArNzI2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKICAgICB7CiAgICAgICAgIFVTdHJpbmcgc3RyID0gaWRlbnQudXN0
cmluZygpOwotICAgICAgICBwYWlyPFN0cmluZ0NvbnN0YW50UG9vbDo6aXRlcmF0b3IsIGJvb2w+
IGl0ZXIgPSBtX2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwoKSwgbV9jb25zdGFudFBvb2wuc2l6
ZSgpKTsKLSAgICAgICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAgICBTdHJpbmdDb25zdGFu
dFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwo
KSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICAgICAgd3JpdGUoU3RyaW5nUG9vbFRhZyk7Ci0gICAgICAgICAgICB3
cml0ZVN0cmluZ0luZGV4KGl0ZXIuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICB3cml0ZVN0
cmluZ0luZGV4KGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9O
UFY4T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3Bw
CmluZGV4IDZmZGYzNzM0MmUwMzBjZDZlZWRhNWY3MTBhYjkyZWE5MTkzYTQwZDAuLjVjMzM1OTM3
NzA1ZWYyM2M4NmQ2NjcwYmIxY2I5Mzg3YWYzNjgxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L05QVjhPYmplY3QuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgTlBPYmplY3QqIG5wQ3Jl
YXRlVjhTY3JpcHRPYmplY3QoTlBQIG5wcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qs
IERPTVdpbmQKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGl0ZXIgPSBzdGF0aWNWOE5QT2JqZWN0TWFwKCktPnNldCh2OE9iamVjdEhhc2gsIFY4TlBPYmpl
Y3RWZWN0b3IoKSkuZmlyc3Q7IAorICAgICAgICBpdGVyID0gc3RhdGljVjhOUE9iamVjdE1hcCgp
LT5zZXQodjhPYmplY3RIYXNoLCBWOE5QT2JqZWN0VmVjdG9yKCkpLml0ZXJhdG9yOwogICAgIH0K
IAogICAgIFY4TlBPYmplY3QqIHY4bnBPYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmpl
Y3QqPihfTlBOX0NyZWF0ZU9iamVjdChucHAsICZWOE5QT2JqZWN0Q2xhc3MpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAppbmRleCBmZWQ0N2NhNWVlZTg2NjYwMTYyNDU4
ZTNlMTA0ZjQ2MTJmMWRmOGZmLi4yYWNmMTQxNTNkMWRiOWUxMmI3MjU1OGE1Mzg4ZDk4NmZmOGE1
ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCkBAIC02NywxNSAr
NjcsMTUgQEAgSWRlbnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGludCBpbnRJRCkKICAg
ICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAgICAgfQogICAgIAotICAgIHBhaXI8SW50SWRlbnRp
Zmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGludElkZW50aWZpZXJNYXAoKS5hZGQo
aW50SUQsIDApOyAKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQoIXJl
c3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcg
SWRlbnRpZmllclJlcChpbnRJRCk7CisgICAgSW50SWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IGludElkZW50aWZpZXJNYXAoKS5hZGQoaW50SUQsIDApOworICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsK
KyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJlcChpbnRJ
RCk7CiAgICAgICAgIAotICAgICAgICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5maXJzdC0+
c2Vjb25kKTsKKyAgICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXAqPiBTdHJpbmdJZGVudGlmaWVyTWFwOwpA
QCAtOTMsMTUgKzkzLDE1IEBAIElkZW50aWZpZXJSZXAqIElkZW50aWZpZXJSZXA6OmdldChjb25z
dCBjaGFyKiBuYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgCiAgICAgVVN0cmluZyBzdHJpbmcg
PSBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhuYW1l
LCBzdHJsZW4obmFtZSkpKTsKLSAgICBwYWlyPFN0cmluZ0lkZW50aWZpZXJNYXA6Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBzdHJpbmdJZGVudGlmaWVyTWFwKCkuYWRkKHN0cmluZy5pbXBsKCks
IDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZp
cnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJZGVudGlm
aWVyUmVwKG5hbWUpOworICAgIFN0cmluZ0lkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBzdHJpbmdJZGVudGlmaWVyTWFwKCkuYWRkKHN0cmluZy5pbXBsKCksIDApOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJl
cChuYW1lKTsKICAgICAgICAgCi0gICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0LmZp
cnN0LT5zZWNvbmQpOworICAgICAgICBpZGVudGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25k
OworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogYm9vbCBJZGVudGlm
aWVyUmVwOjppc1ZhbGlkKElkZW50aWZpZXJSZXAqIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCAyY2JlOTIzZjVkMDBhMjEyYmE2OTA0YWJiYjY0MTFm
OTVlMzA1NDMxLi44Mzk4NmFmNTgzYzU5MDQyZjFiZjc3NzUxMjA3YTgwMzUzYWQxM2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgICAgICBIYXNoTWFwPFJvb3RPYmplY3QqLCBKU1RvTlBPYmplY3RNYXA+OjppdGVyYXRv
ciBpdGVyID0gbV9tYXAuZmluZChyb290T2JqZWN0KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9t
YXAuZW5kKCkpIHsKICAgICAgICAgICAgIHJvb3RPYmplY3QtPmFkZEludmFsaWRhdGlvbkNhbGxi
YWNrKCZtX2ludmFsaWRhdGlvbkNhbGxiYWNrKTsKLSAgICAgICAgICAgIGl0ZXIgPSBtX21hcC5h
ZGQocm9vdE9iamVjdCwgSlNUb05QT2JqZWN0TWFwKCkpLmZpcnN0OworICAgICAgICAgICAgaXRl
ciA9IG1fbWFwLmFkZChyb290T2JqZWN0LCBKU1RvTlBPYmplY3RNYXAoKSkuaXRlcmF0b3I7CiAg
ICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoaXRlci0+c2Vjb25kLmZpbmQoanNPYmplY3QpID09
IGl0ZXItPnNlY29uZC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI5ODljMWQ1YTZlYWM3MDg4OTQzNGY1MWM5
MDc2NjNmYTczNzIyZTQuLjUyMTkwOTdjZTRkZmQ2OWNjZDhmYmE0NzI5OTkyODBjZGNkZDdkYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBpbnQgcHJvcAogc3Rh
dGljIHZvaWQgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQoaW50IHByb3BlcnR5SUQpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PGludD4sIHByb3BlcnR5SURTZXQsICgpKTsK
LSAgICBpZiAoIXByb3BlcnR5SURTZXQuYWRkKHByb3BlcnR5SUQpLnNlY29uZCkKKyAgICBpZiAo
IXByb3BlcnR5SURTZXQuYWRkKHByb3BlcnR5SUQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIExPR19FUlJPUigiV2ViS2l0IGRvZXMgbm90IHlldCBpbXBsZW1lbnQgZ2V0Q29t
cHV0ZWRTdHlsZSBmb3IgJyVzJy4iLCBnZXRQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJv
cGVydHlJRD4ocHJvcGVydHlJRCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCmluZGV4IGUzNjczNWFmYjZiMTczNDcxNzA4NjdlNzQ4NDE3ZDdlM2Q2NzJlNGIuLmRk
OTA0ZDM3ZmI5NTRlNDRkYmE2NTM4NzY3MzU4MzExOThmYWQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNpbXBsZUZvbnRE
YXRhKiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpCiAgICAgdW5zaWduZWQgaGFzaEtleSA9IChmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRQaXhlbFNpemUoKSArIDEpIDw8IDYgfCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50
KCkgPDwgNAogICAgICAgICAgICAgICAgICAgICAgICB8IChmb250RGVzY3JpcHRpb24udGV4dE9y
aWVudGF0aW9uKCkgPT0gVGV4dE9yaWVudGF0aW9uVXByaWdodCA/IDggOiAwKSB8IChmb250RGVz
Y3JpcHRpb24ub3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbCA/IDQgOiAwKSB8IChzeW50aGV0aWNC
b2xkID8gMiA6IDApIHwgKHN5bnRoZXRpY0l0YWxpYyA/IDEgOiAwKTsKIAotICAgIFNpbXBsZUZv
bnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuZmly
c3QtPnNlY29uZDsKKyAgICBTaW1wbGVGb250RGF0YSomIGNhY2hlZERhdGEgPSBtX2ZvbnREYXRh
VGFibGUuYWRkKGhhc2hLZXksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKGNhY2hlZERh
dGEpCiAgICAgICAgIHJldHVybiBjYWNoZWREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCmluZGV4IDZkMjJmZGNjZDBkNTc5ZDA4YzRhNjVjMmU2ZTVmZmJiYjVhMjRm
YTUuLmUwMDJmMmY4ZjAxNzBlOThjYTU2ZDcxZmU1Y2RiOTdiYmVhNjJiODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBDU1NG
b250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBDU1NGb250RmFjZVJ1bGUqIGZvbnRG
YWNlUnVsZSkKICAgICAgICAgaWYgKGZhbWlseU5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4g
PiYgZmFtaWx5Rm9udEZhY2VzID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIp
LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNl
PiA+ID4mIGZhbWlseUZvbnRGYWNlcyA9IG1fZm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBudWxs
cHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBpZiAoIWZhbWlseUZvbnRGYWNlcykgewog
ICAgICAgICAgICAgZmFtaWx5Rm9udEZhY2VzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8
Q1NTRm9udEZhY2U+ID4pOwogCkBAIC00ODcsMTMgKzQ4NywxMyBAQCBGb250RGF0YSogQ1NTRm9u
dFNlbGVjdG9yOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgYwogICAgICAgICByZXR1cm4gZm9udERhdGFGb3JHZW5lcmljRmFtaWx5KG1fZG9jdW1l
bnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAgICAgfQogCi0gICAgT3duUHRyPEhh
c2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPiA+JiBzZWdtZW50
ZWRGb250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFtaWx5LCBudWxscHRyKS5maXJzdC0+c2Vj
b25kOworICAgIE93blB0cjxIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9u
dEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9IG1fZm9udHMuYWRkKGZhbWlseSwg
bnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXNlZ21lbnRlZEZvbnRGYWNlQ2Fj
aGUpCiAgICAgICAgIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUgPSBhZG9wdFB0cihuZXcgSGFzaE1h
cDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+KTsKIAogICAgIEZvbnRU
cmFpdHNNYXNrIHRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogCi0g
ICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNl
Q2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NT
ZWdtZW50ZWRGb250RmFjZT4mIGZhY2UgPSBzZWdtZW50ZWRGb250RmFjZUNhY2hlLT5hZGQodHJh
aXRzTWFzaywgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWZhY2UpIHsKICAgICAgICAg
ZmFjZSA9IENTU1NlZ21lbnRlZEZvbnRGYWNlOjpjcmVhdGUodGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IGUzZDliNzcwMTMwYTAzNTEw
ZTA5NDZiZDc1ZjU0YzM5Yzk5NzIwMjUuLmNmOWVjOWUyZWQyZjlmZWYyYmJkOTRmZjY1ZTBhYWUz
MmEzODQxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIEZvbnREYXRhKiBDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0
Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpCiAgICAgRm9udFRy
YWl0c01hc2sgZGVzaXJlZFRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygp
OwogICAgIHVuc2lnbmVkIGhhc2hLZXkgPSAoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVs
U2l6ZSgpICsgMSkgPDwgKEZvbnRUcmFpdHNNYXNrV2lkdGggKyAxKSkgfCAoKGZvbnREZXNjcmlw
dGlvbi5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsID8gMSA6IDApIDw8IEZvbnRUcmFpdHNNYXNr
V2lkdGgpIHwgZGVzaXJlZFRyYWl0c01hc2s7CiAKLSAgICBTZWdtZW50ZWRGb250RGF0YSomIGZv
bnREYXRhID0gbV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOwor
ICAgIFNlZ21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhh
c2hLZXksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAgICBy
ZXR1cm4gZm9udERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZUFwcGx5UHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5jcHAKaW5kZXggMzFhODdhZjBjM2IzNGY4ZTY2Zjc0OGZhMTE2ZmRiMTdlNDU0N2QzMS4u
MDQxZDZjODI0NTIzZDJmMjliNTYyZmIxYzI0NGY1MjQwYzA2YzE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTEwMDQsNyArMTAwNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBDb3VudGVyRGlyZWN0aXZlTWFwOjppdGVyYXRvciBJ
dGVyYXRvcjsKICAgICAgICAgSXRlcmF0b3IgZW5kID0gcGFyZW50TWFwLmVuZCgpOwogICAgICAg
ICBmb3IgKEl0ZXJhdG9yIGl0ID0gcGFyZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGl0
LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAg
IENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50
ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRl
ckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0
ID0gaXQtPnNlY29uZC5tX3Jlc2V0OwogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNl
dFZhbHVlID0gaXQtPnNlY29uZC5tX3Jlc2V0VmFsdWU7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsK
ICAgICAgICAgICAgIGludCB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
cGFpci0+c2Vjb25kKCkpLT5nZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAgQ291bnRlckRpcmVj
dGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGly
ZWN0aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMm
IGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZl
cygpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9
PSBSZXNldCkgewogICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBlYzJmOTcyMDY1MmJjMzgwOGFiNWEw
YTIwNmM1ZDhiMDVkZTFmMzg2Li5lNTIyYTNjY2I5MjBkMTk2YjgyMWVlNTFmOTJiZTc2MzFhYWQ2
NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC00OTYsMTAg
KzQ5NiwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRz
KHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UgogI2lmIEVOQUJMRShTVFlMRV9TQ09Q
RUQpCiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gZGV0ZXJtaW5lU2NvcGUo
Y3NzU2hlZXQpOwogICAgICAgICBpZiAoc2NvcGUpIHsKLSAgICAgICAgICAgIHBhaXI8U2NvcGVk
UnVsZVNldE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0aG9yU3R5
bGVzLmFkZChzY29wZSwgbnVsbHB0cik7Ci0gICAgICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5l
dyBSdWxlU2V0KCkpOwotICAgICAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQtPmFkZFJ1
bGVzRnJvbVNoZWV0KGNzc1NoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKKyAgICAgICAg
ICAgIFNjb3BlZFJ1bGVTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX3Njb3BlZEF1dGhv
clN0eWxlcy5hZGQoc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
YWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnNlY29uZC0+YWRkUnVsZXNGcm9tU2hlZXQoY3NzU2hlZXQsICptX21lZGl1bSwgdGhpcywgc2Nv
cGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMjM4MCw3
ICsyMzgwLDcgQEAgdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCog
a2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEKIHsKICAgICBpZiAoIWtleSkKICAg
ICAgICAgcmV0dXJuOwotICAgIE93blB0cjxWZWN0b3I8UnVsZURhdGE+ID4mIHJ1bGVzID0gbWFw
LmFkZChrZXksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFZlY3RvcjxSdWxl
RGF0YT4gPiYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsK
ICAgICBpZiAoIXJ1bGVzKQogICAgICAgICBydWxlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UnVs
ZURhdGE+KTsKICAgICBydWxlcy0+YXBwZW5kKHJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlUG9vbC5jcHAKaW5kZXggYzQ2YzcwNDdjNTAwZTRiMjgzZjNkN2VjNTg0YmQ5YjhlOTM0NmVl
YS4uMDViYTU0OTUwMmFmYjg3Njc3ZjI1MzEyYmYxM2FiNjQ5NzY5YTQ2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQgaWRl
bnQpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihp
ZGVudCk7CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGR1bW15VmFsdWU7Ci0gICAg
cGFpcjxJZGVudGlmaWVyVmFsdWVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9pZGVu
dGlmaWVyVmFsdWVDYWNoZS5hZGQoaWRlbnQsIGR1bW15VmFsdWUpOwotICAgIGlmIChlbnRyeS5z
ZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7
CisgICAgSWRlbnRpZmllclZhbHVlQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IG1faWRlbnRpZmll
clZhbHVlQ2FjaGUuYWRkKGlkZW50LCBkdW1teVZhbHVlKTsKKyAgICBpZiAoZW50cnkuaXNOZXdF
bnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKKyAgICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpj
cmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVlKQpAQCAtNzgsMTAgKzc4LDEwIEBAIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1
ZSh1bnNpZ25lZCByZ2JWYWx1ZSkKICAgICAgICAgbV9jb2xvclZhbHVlQ2FjaGUuY2xlYXIoKTsK
IAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPENv
bG9yVmFsdWVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUu
YWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAg
ICBlbnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHJn
YlZhbHVlKTsKLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBDb2xvclZhbHVl
Q2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY29sb3JWYWx1ZUNhY2hlLmFkZChyZ2JWYWx1ZSwg
ZHVtbXlWYWx1ZSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCisgICAgICAgIGVudHJ5Lml0
ZXJhdG9yLT5zZWNvbmQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUp
OworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKQpAQCAtMTE3LDE1ICsxMTcsMTUgQEAg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1ZShk
b3VibGUgdmFsdWUsIENTU1ByaW1pdGkKICAgICB9CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGR1bW15VmFsdWU7Ci0gICAgcGFpcjxJbnRlZ2VyVmFsdWVDYWNoZTo6aXRlcmF0b3Is
IGJvb2w+IGVudHJ5ID0gY2FjaGUtPmFkZChpbnRWYWx1ZSwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYg
KGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5cGUpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vj
b25kOworICAgIEludGVnZXJWYWx1ZUNhY2hlOjpBZGRSZXN1bHQgZW50cnkgPSBjYWNoZS0+YWRk
KGludFZhbHVlLCBkdW1teVZhbHVlKTsKKyAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkKKyAgICAg
ICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFs
dWUsIHR5cGUpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYW1pbHlW
YWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFkZChmYW1pbHlOYW1lLCAw
KS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHZhbHVlID0g
bV9mb250RmFtaWx5VmFsdWVDYWNoZS5hZGQoZmFtaWx5TmFtZSwgMCkuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICB2YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoZmFtaWx5TmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogICAgIHJl
dHVybiB2YWx1ZTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgcwog
ICAgIGlmIChtX2ZvbnRGYWNlVmFsdWVDYWNoZS5zaXplKCkgPiBtYXhpbXVtRm9udEZhY2VDYWNo
ZVNpemUpCiAgICAgICAgIG1fZm9udEZhY2VWYWx1ZUNhY2hlLmNsZWFyKCk7CiAKLSAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiYgdmFsdWUgPSBtX2ZvbnRGYWNlVmFsdWVDYWNoZS5hZGQoc3RyaW5n
LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1ZSA9IG1f
Zm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgdmFsdWUgPSBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1
ZShzdHJpbmcsIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICByZXR1cm4gdmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKaW5kZXggNDcwZGEyYWQ1YzczYjE3
OTJhZTYyM2Q5NDgyNjhiOGQ2NTVlNmM1OC4uZTY3MjMyOWFmOGRlMzc4YmVmZGZjMTRmOGFjYmQw
ZjJlYzBjNzQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1
dHRvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNw
cApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OnNldENoZWNrZWRCdXR0
b24oSFRNTElucHV0RWxlbWVudCogYnV0dG9uKQogdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjphZGQo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uKQogewogICAgIEFTU0VSVChidXR0b24tPmlzUmFkaW9C
dXR0b24oKSk7Ci0gICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1dHRvbikuc2Vjb25kKQorICAgIGlm
ICghbV9tZW1iZXJzLmFkZChidXR0b24pLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKICAg
ICBib29sIGdyb3VwV2FzVmFsaWQgPSBpc1ZhbGlkKCk7CiAgICAgaWYgKGJ1dHRvbi0+cmVxdWly
ZWQoKSkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1
dHRvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghbV9uYW1lVG9Hcm91cE1h
cCkKICAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IGFkb3B0UHRyKG5ldyBOYW1lVG9Hcm91cE1h
cCk7CiAKLSAgICBPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4mIGdyb3VwID0gbV9uYW1lVG9Hcm91
cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5pbXBsKCksIFBhc3NPd25QdHI8UmFkaW9CdXR0b25H
cm91cD4oKSkuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4mIGdy
b3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQtPm5hbWUoKS5pbXBsKCksIFBhc3NP
d25QdHI8UmFkaW9CdXR0b25Hcm91cD4oKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWdy
b3VwKQogICAgICAgICBncm91cCA9IFJhZGlvQnV0dG9uR3JvdXA6OmNyZWF0ZSgpOwogICAgIGdy
b3VwLT5hZGQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRM
aXN0TXV0YXRpb25TY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5jcHAKaW5kZXggY2JhYWE0ZWZlYzAxN2IzNjIyYjY4NDk0Y2RlNGYxOTMxY2NhYmQ4
Zi4uYzVjYjNhZDlmNmVhYjc4ZDg5ZTVkNjdlYTljNDM1MjMyMjk3ZTA3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcApAQCAtMjExLDkgKzIxMSw5
IEBAIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0
ZXI6OndpbGxSZW1vdmVDaGlsZChOb2RlKiB0CiAKIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OmluY3JlbWVudFNjb3BpbmdMZXZlbChOb2Rl
KiB0YXJnZXQpCiB7Ci0gICAgcGFpcjxTY29waW5nTGV2ZWxNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX3Njb3BpbmdMZXZlbHMuYWRkKHRhcmdldCwgMSk7Ci0gICAgaWYgKCFyZXN1bHQu
c2Vjb25kKSB7Ci0gICAgICAgICsrKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBTY29waW5n
TGV2ZWxNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3Njb3BpbmdMZXZlbHMuYWRkKHRhcmdldCwg
MSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICArKyhyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDU0OTBkY2NkNWVlYWNkNjRjYjFkOWQ3ZjQ3ZDhhZWE5NGI2OTllMWMuLmVh
YmQ4ODYyY2ZjM2IwYjc2MmVlYTNkNDMwZjA5OGU0NTU3MDc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNDUxOSw3ICs0NTE5LDcgQEAgSFRNTEFsbENvbGxlY3Rpb24qIERvY3VtZW50
OjphbGwoKQogCiBIVE1MQ29sbGVjdGlvbiogRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+
JiBjb2xsZWN0aW9uID0gbV93aW5kb3dOYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFtZS5pbXBs
KCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlv
bj4mIGNvbGxlY3Rpb24gPSBtX3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmlt
cGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWNvbGxlY3Rpb24pCiAg
ICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBXaW5k
b3dOYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQoKTsKQEAgLTQ1
MjcsNyArNDUyNyw3IEBAIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVt
cyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAKIEhUTUxDb2xsZWN0aW9uKiBEb2N1bWVudDo6
ZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBPd25Q
dHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1D
b2xsZWN0aW9ucy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAg
T3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX2RvY3VtZW50TmFtZWRJ
dGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25k
OwogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxOYW1lQ29s
bGVjdGlvbjo6Y3JlYXRlKHRoaXMsIERvY3VtZW50TmFtZWRJdGVtcywgbmFtZSk7CiAgICAgcmV0
dXJuIGNvbGxlY3Rpb24uZ2V0KCk7CkBAIC00OTIwLDcgKzQ5MjAsNyBAQCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0CiAKIEhUTUxDYW52YXNFbGVtZW50KiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxl
bWVudChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50
PiYgZWxlbWVudCA9IG1fY3NzQ2FudmFzRWxlbWVudHMuYWRkKG5hbWUsIDApLmZpcnN0LT5zZWNv
bmQ7CisgICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgZWxlbWVudCA9IG1fY3NzQ2FudmFz
RWxlbWVudHMuYWRkKG5hbWUsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFlbGVtZW50
KQogICAgICAgICBlbGVtZW50ID0gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZSh0aGlzKTsKICAg
ICByZXR1cm4gZWxlbWVudC5nZXQoKTsKQEAgLTU3MjMsMTIgKzU3MjMsMTIgQEAgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gRG9jdW1lbnQ6OmdldEl0ZW1zKGNvbnN0IFN0cmluZyYgdHlwZU5hbWVzKQog
ICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiB1bmlxdWUgc3RyaW5nIGlk
ZW50aWZpZXIgdG8gbWFwIHN1Y2ggcmVxdWVzdCBpbiB0aGUgY2FjaGUuCiAgICAgU3RyaW5nIGxv
Y2FsVHlwZU5hbWVzID0gdHlwZU5hbWVzLmlzTnVsbCgpID8gU3RyaW5nKCJodHRwOi8vd2Via2l0
Lm9yZy9taWNyb2RhdGEvdW5kZWZpbmVkSXRlbVR5cGUiKSA6IHR5cGVOYW1lczsKIAotICAgIHBh
aXI8Tm9kZUxpc3RzTm9kZURhdGE6Ok1pY3JvRGF0YUl0ZW1MaXN0Q2FjaGU6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBub2RlTGlzdHMtPm1fbWljcm9EYXRhSXRlbUxpc3RDYWNoZS5hZGQobG9j
YWxUeXBlTmFtZXMsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJu
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBOb2RlTGlz
dHNOb2RlRGF0YTo6TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG5v
ZGVMaXN0cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7
CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxNaWNyb0Rh
dGFJdGVtTGlzdD4gbGlzdCA9IE1pY3JvRGF0YUl0ZW1MaXN0OjpjcmVhdGUodGhpcywgdHlwZU5h
bWVzKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2Uo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCA1
Yjg5OWIzZjU3OGEyNzQzOTgyNDg1OThiOWQyOWFkOTg4ZjAwMzZlLi41NDk0MDgyNTI4YjI5MzM1
ZTBjNTM3N2U3MGIzNGQ3NGQ1NTIyNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6
ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpKTsKLSAgICBib29sIHdhc0FkZGVkID0g
bV9xdWV1ZWRFdmVudHMuYWRkKGV2ZW50KS5zZWNvbmQ7CisgICAgYm9vbCB3YXNBZGRlZCA9IG1f
cXVldWVkRXZlbnRzLmFkZChldmVudCkuaXNOZXdFbnRyeTsKICAgICBBU1NFUlRfVU5VU0VEKHdh
c0FkZGVkLCB3YXNBZGRlZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4g
dGhlIGxpc3QuCiAgICAgCiAgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgp
KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JE
aXNwYXRjaFNjcm9sbEV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBTCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFk
ZCh0YXJnZXQuZ2V0KCkpLnNlY29uZCkKKyAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVkU2Nyb2xs
RXZlbnRzLmFkZCh0YXJnZXQuZ2V0KCkpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNjcm9sbEV2ZW50LT5zZXRUYXJnZXQodGFyZ2V0KTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2
b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCgpCiAKICAgICAv
LyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgogICAgIEFTU0VSVCgh
bV9xdWV1ZWRFdmVudHMuY29udGFpbnMoMCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVl
ZEV2ZW50cy5hZGQoMCkuc2Vjb25kOworICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50
cy5hZGQoMCkuaXNOZXdFbnRyeTsKICAgICBBU1NFUlRfVU5VU0VEKHdhc0FkZGVkLCB3YXNBZGRl
ZCk7IC8vIEl0IHNob3VsZCBub3QgaGF2ZSBhbHJlYWR5IGJlZW4gaW4gdGhlIGxpc3QuCiAKICAg
ICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IGJjYjIzYjQ5NjJmNjQ2NmJiNjFi
OGFlYmFmYTQwNWZlZTg4ZTkzMDMuLjA4MmFhMDc0MGE3MWNjZGY1MGUxZDQyZDIzZDMxN2U2M2Fm
MmY0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC02
OSwxNCArNjksMTQgQEAgdm9pZCBEb2N1bWVudE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJ
bXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFtX2R1cGxpY2F0ZUNvdW50cy5j
b250YWlucyhrZXkpKSB7CiAgICAgICAgIC8vIEZhc3QgcGF0aC4gVGhlIGtleSBpcyBub3QgYWxy
ZWFkeSBpbiBtX2R1cGxpY2F0ZUNvdW50cywgc28gd2UgYXNzdW1lIHRoYXQgaXQncwogICAgICAg
ICAvLyBhbHNvIG5vdCBhbHJlYWR5IGluIG1fbWFwIGFuZCB0cnkgdG8gYWRkIGl0LiBJZiB0aGF0
IGFkZCBzdWNjZWVkcywgd2UncmUgZG9uZS4KLSAgICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBi
b29sPiBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBlbGVtZW50KTsKLSAgICAgICAgaWYgKGFk
ZFJlc3VsdC5zZWNvbmQpCisgICAgICAgIE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGVsZW1lbnQpOworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gVGhlIGFkZCBmYWlsZWQsIHNvIHRoaXMg
a2V5IHdhcyBhbHJlYWR5IGNhY2hlZCBpbiBtX21hcC4KICAgICAgICAgLy8gVGhlcmUgYXJlIG11
bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKICAgICAgICAg
Ly8gY2FjaGUgZm9yIHRoaXMga2V5IHNvIGdldCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1lIGl0
IGlzIGNhbGxlZC4KLSAgICAgICAgbV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7CisgICAg
ICAgIG1fbWFwLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBtX2R1cGxpY2F0
ZUNvdW50cy5hZGQoa2V5KTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGVyZSBhcmUgbXVs
dGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IDc3NGU2NjU3NGE2YmNjMWRlY2ZhOTY2
OTYzZGJhOTYwYWE5OWM0NDkuLmMxZmQ0ZDdjOTU3YTY0YmZmNzg4ZjkwMWU2MWRlMDFjYTA5MjI3
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTEzNCwxMSAr
MTM0LDExIEBAIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuCiAgICAgfQogCiAgICAgaWYgKG1faGFz
aE1hcCkgewotICAgICAgICBwYWlyPEV2ZW50TGlzdGVuZXJIYXNoTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gbV9oYXNoTWFwLT5hZGQoZXZlbnRUeXBlLCBudWxscHRyKTsKLSAgICAgICAg
aWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFk
b3B0UHRyKG5ldyBFdmVudExpc3RlbmVyVmVjdG9yKTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lckhh
c2hNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hhc2hNYXAtPmFkZChldmVudFR5cGUsIG51bGxw
dHIpOworICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBFdmVudExpc3RlbmVyVmVjdG9yKTsKIAot
ICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuZmlyc3QtPnNlY29uZC5n
ZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJU
b1ZlY3RvcihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1
cmUpOwogICAgIH0KIAogICAgIGlmICghbV9zaW5nbGVFdmVudExpc3RlbmVyVmVjdG9yKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggNDgwZTViYjdmNGViZjcwOTAxZWUxMjhkMDdjODU3MDUwZDg0MDQ3
NC4uMzM2ZTFiZjdhYjI0ZjNkNDg4MGJhMTU3NmRmZGYyMzdlYmNhMjE2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtMTg1LDkgKzE4NSw5IEBAIHZvaWQgTm9kZTo6ZHVtcFN0YXRpc3RpY3MoKQogCiAg
ICAgICAgICAgICAgICAgLy8gVGFnIHN0YXRzCiAgICAgICAgICAgICAgICAgRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgICAgICBwYWly
PEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gcGVyVGFn
Q291bnQuYWRkKGVsZW1lbnQtPnRhZ05hbWUoKSwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCsr
OworICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+OjpBZGRSZXN1bHQgcmVz
dWx0ID0gcGVyVGFnQ291bnQuYWRkKGVsZW1lbnQtPnRhZ05hbWUoKSwgMSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQrKzsKIAogICAgICAgICAgICAgICAgIGlmIChFbGVtZW50QXR0cmli
dXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IGVsZW1lbnQtPmF0dHJpYnV0ZURhdGEoKSkgewogICAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzICs9IGF0dHJpYnV0ZURhdGEtPmxlbmd0aCgpOwpA
QCAtMTYxMiwxMiArMTYxMiwxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIAogICAgIEF0b21p
Y1N0cmluZyBsb2NhbE5hbWVBdG9tID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURh
dGE6OlRhZ05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBlbnN1cmVSYXJl
RGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQobG9j
YWxOYW1lQXRvbSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4g
UGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVM
aXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gZW5zdXJl
UmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGUuYWRk
KGxvY2FsTmFtZUF0b20sIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7
CiAKICAgICBSZWZQdHI8VGFnTm9kZUxpc3Q+IGxpc3QgPSBUYWdOb2RlTGlzdDo6Y3JlYXRlKHRo
aXMsIHN0YXJBdG9tLCBsb2NhbE5hbWVBdG9tKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9
IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwog
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsgICAKIH0KIApAQCAtMTYzNSwzNiArMTYzNSwzNiBA
QCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVQogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0
b20gPSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNo
ZU5TOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05v
ZGVMaXN0Q2FjaGVOUzo6QWRkUmVzdWx0IHJlc3VsdAogICAgICAgICA9IGVuc3VyZVJhcmVEYXRh
KCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlTlMuYWRkKFF1YWxp
ZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZUF0b20sIG5hbWVzcGFjZVVSSSkuaW1wbCgpLCAw
KTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRh
Z05vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVM
aXN0OjpjcmVhdGUodGhpcywgbmFtZXNwYWNlVVJJLmlzRW1wdHkoKSA/IG51bGxBdG9tIDogbmFt
ZXNwYWNlVVJJLCBsb2NhbE5hbWVBdG9tKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxp
c3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAg
IHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6
Z2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSkKIHsKLSAgICBwYWly
PE5vZGVMaXN0c05vZGVEYXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9k
ZUxpc3RDYWNoZS5hZGQoZWxlbWVudE5hbWUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkK
LSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2FjaGU6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbmFtZU5v
ZGVMaXN0Q2FjaGUuYWRkKGVsZW1lbnROYW1lLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPE5hbWVOb2RlTGlzdD4gbGlzdCA9IE5hbWVOb2RlTGlz
dDo6Y3JlYXRlKHRoaXMsIGVsZW1lbnROYW1lKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9
IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwog
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9k
ZTo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpCiB7Ci0g
ICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OkNsYXNzTm9kZUxpc3RDYWNoZTo6
QWRkUmVzdWx0IHJlc3VsdAogICAgICAgICA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVM
aXN0cyh0aGlzKS0+bV9jbGFzc05vZGVMaXN0Q2FjaGUuYWRkKGNsYXNzTmFtZXMsIDApOwotICAg
IGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQp
OwogCiAgICAgUmVmUHRyPENsYXNzTm9kZUxpc3Q+IGxpc3QgPSBDbGFzc05vZGVMaXN0OjpjcmVh
dGUodGhpcywgY2xhc3NOYW1lcyk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBsaXN0Lmdl
dCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbGlzdC5nZXQoKTsKICAgICByZXR1
cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTI1OTEsOSArMjU5MSw5IEBAIHZvaWQgTm9kZTo6
Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKiwKICAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qIHJl
Z2lzdHJhdGlvbiA9IHJlZ2lzdHJ5LT5hdChpKS5nZXQoKTsKICAgICAgICAgICAgIGlmIChyZWdp
c3RyYXRpb24tPnNob3VsZFJlY2VpdmVNdXRhdGlvbkZyb20odGhpcywgdHlwZSwgYXR0cmlidXRl
TmFtZSkpIHsKICAgICAgICAgICAgICAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBk
ZWxpdmVyeU9wdGlvbnMgPSByZWdpc3RyYXRpb24tPmRlbGl2ZXJ5T3B0aW9ucygpOwotICAgICAg
ICAgICAgICAgIHBhaXI8SGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25S
ZWNvcmREZWxpdmVyeU9wdGlvbnM+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gb2JzZXJ2ZXJz
LmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVyKCksIGRlbGl2ZXJ5T3B0aW9ucyk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CisgICAgICAgICAgICAgICAgSGFzaE1h
cDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gb2JzZXJ2ZXJzLmFkZChyZWdpc3RyYXRpb24tPm9ic2VydmVy
KCksIGRlbGl2ZXJ5T3B0aW9ucyk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gZGVs
aXZlcnlPcHRpb25zOwogCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2MDQsOSArMjYw
NCw5IEBAIHZvaWQgTm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFz
aE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwKICAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbiA9ICppdGVyOwogICAgICAgICAgICAgaWYgKHJl
Z2lzdHJhdGlvbi0+c2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1
dGVOYW1lKSkgewogICAgICAgICAgICAgICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
IGRlbGl2ZXJ5T3B0aW9ucyA9IHJlZ2lzdHJhdGlvbi0+ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAg
ICAgICAgICAgICAgcGFpcjxIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlv
blJlY29yZERlbGl2ZXJ5T3B0aW9ucz46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvYnNlcnZl
cnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICBIYXNo
TWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cz46OkFkZFJlc3VsdCByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2
ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSBk
ZWxpdmVyeU9wdGlvbnM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggYTc0MjYyOTVlZjA2NGViZTljMGZhZGVmMGY2
NzAxZDUxNjU4ZGEzZS4uZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtNTYsOSArNTYsOSBAQCB2b2lk
IFF1YWxpZmllZE5hbWU6OmluaXQoY29uc3QgQXRvbWljU3RyaW5nJiBwLCBjb25zdCBBdG9taWNT
dHJpbmcmIGwsIGNvbnN0IEF0bwogICAgIGlmICghZ05hbWVDYWNoZSkKICAgICAgICAgZ05hbWVD
YWNoZSA9IG5ldyBRTmFtZVNldDsKICAgICBRdWFsaWZpZWROYW1lQ29tcG9uZW50cyBjb21wb25l
bnRzID0geyBwLmltcGwoKSwgbC5pbXBsKCksIG4uaXNFbXB0eSgpID8gbnVsbEF0b20uaW1wbCgp
IDogbi5pbXBsKCkgfTsKLSAgICBwYWlyPFFOYW1lU2V0OjppdGVyYXRvciwgYm9vbD4gYWRkUmVz
dWx0ID0gZ05hbWVDYWNoZS0+YWRkPFF1YWxpZmllZE5hbWVDb21wb25lbnRzLCBRTmFtZUNvbXBv
bmVudHNUcmFuc2xhdG9yPihjb21wb25lbnRzKTsKLSAgICBtX2ltcGwgPSAqYWRkUmVzdWx0LmZp
cnN0OyAgICAKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgUU5hbWVTZXQ6OkFkZFJl
c3VsdCBhZGRSZXN1bHQgPSBnTmFtZUNhY2hlLT5hZGQ8UXVhbGlmaWVkTmFtZUNvbXBvbmVudHMs
IFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I+KGNvbXBvbmVudHMpOworICAgIG1faW1wbCA9ICph
ZGRSZXN1bHQuaXRlcmF0b3I7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgbV9pbXBsLT5yZWYoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nw
YWNlU3BsaXRTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwCmluZGV4IDAzNWM0YTIxYTcyYzljZDg0MGUwYjI5NjJjZTY5NzZhZDg1NmJjYmUuLjljY2U3
ZDk1YjVlMTA0NDNjMDNlZGE1YjcyZjExMmM1NzA1MmU1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U3BhY2VTcGxpdFN0cmluZy5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBTcGFjZVNwbGl0U3RyaW5n
RGF0YTo6flNwYWNlU3BsaXRTdHJpbmdEYXRhKCkKIAogUGFzc1JlZlB0cjxTcGFjZVNwbGl0U3Ry
aW5nRGF0YT4gU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZykKIHsKLSAgICBTcGFjZVNwbGl0U3RyaW5nRGF0YSomIGRhdGEgPSBzaGFyZWREYXRh
TWFwKCkuYWRkKHN0cmluZywgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBTcGFjZVNwbGl0U3RyaW5n
RGF0YSomIGRhdGEgPSBzaGFyZWREYXRhTWFwKCkuYWRkKHN0cmluZywgMCkuaXRlcmF0b3ItPnNl
Y29uZDsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgZGF0YSA9IG5ldyBTcGFjZVNwbGl0U3Ry
aW5nRGF0YShzdHJpbmcpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoZGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTc2MWY1MDZlOTAxMDkxNzM2NDZjMWM5Mzdj
NTEwNzYzYjFhYzI2My4uMjI4YWE4NmUzNWFhNjMxMzg4MDhmOTBlY2M5NjljMjZkYWNjNDAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogCiAgICAgUHJlc2VudGF0
aW9uQXR0cmlidXRlQ2FjaGU6Oml0ZXJhdG9yIGNhY2hlSXRlcmF0b3I7CiAgICAgaWYgKGNhY2hl
SGFzaCkgewotICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0cmlidXRlQ2Fj
aGUoKS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5maXJzdDsKKyAgICAgICAgY2FjaGVJdGVyYXRv
ciA9IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuYWRkKGNhY2hlSGFzaCwgbnVsbHB0ciku
aXRlcmF0b3I7CiAgICAgICAgIGlmIChjYWNoZUl0ZXJhdG9yLT5zZWNvbmQgJiYgY2FjaGVJdGVy
YXRvci0+c2Vjb25kLT5rZXkgIT0gY2FjaGVLZXkpCiAgICAgICAgICAgICBjYWNoZUhhc2ggPSAw
OwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCBk
MTFmZWUxMjE4MTVjN2NmYzdjOTlkMDFjZTU0NTU4N2JlM2NiMWI2Li5jM2E3MTUzY2FlNDVhZDYw
MWE4NWM4NTA5OWUzZjE1MTg5OTcyN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xs
ZWN0aW9uOjp0YWdzKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogdm9pZCBIVE1MQ29sbGVjdGlvbjo6
YXBwZW5kKE5vZGVDYWNoZU1hcCYgbWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBt
YXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFZl
Y3RvcjxFbGVtZW50Kj4gPiYgdmVjdG9yID0gbWFwLmFkZChrZXkuaW1wbCgpLCBudWxscHRyKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmVjdG9yKQogICAgICAgICB2ZWN0b3IgPSBhZG9w
dFB0cihuZXcgVmVjdG9yPEVsZW1lbnQqPik7CiAgICAgdmVjdG9yLT5hcHBlbmQoZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDI1
ZGNhMzNjZTcwNDg4ZGI1YTgzY2Q5ZjkzZWQ1Y2QxZmE4YTlkNjcuLmQ3ZmNiOWFhYzA4ZTg4NTM2
ODZjZmRkYjUxZmExZTEwZDI5OTQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuY3BwCkBAIC0yMzMsMTIgKzIzMywxMiBAQCBET01QYXRjaFN1cHBvcnQ6
OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+ID4mIG9sZExpc3QsIGNvbnN0IFZlY3Rv
cjxPd25QdAogICAgIERpZmZUYWJsZSBvbGRUYWJsZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbmV3TGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9y
IGl0ID0gbmV3VGFibGUuYWRkKG5ld0xpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNpemVfdD4oKSku
Zmlyc3Q7CisgICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBuZXdUYWJsZS5hZGQobmV3
TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5pdGVyYXRvcjsKICAgICAgICAgaXQt
PnNlY29uZC5hcHBlbmQoaSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
bGRMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBv
bGRUYWJsZS5hZGQob2xkTGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsK
KyAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ld
LT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25k
LmFwcGVuZChpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCmluZGV4IGRjYTgxY2FjYWM2YjM4N2RlZWE2ZjkzOTdjMGFjZWUyNDJm
NjA2NjkuLjA2NGI4NjJjOTBiNzU1ZTlmODNiMmEwZjdjYTgxZTQxZjE1NDE4OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTgxLDEy
ICsxODEsMTIgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcihi
b29sIG1hdGNoZWQpCiAgICAgZG91YmxlIG1hdGNoVGltZU1zID0gV1RGOjpjdXJyZW50VGltZU1T
KCkgLSBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1lOwogICAgIG1fdG90YWxNYXRjaGluZ1Rp
bWVNcyArPSBtYXRjaFRpbWVNczsKIAotICAgIHBhaXI8UnVsZU1hdGNoaW5nU3RhdHNNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmFkZChtYWtlS2V5KCks
IFJ1bGVNYXRjaGluZ1N0YXRzKG1fY3VycmVudE1hdGNoRGF0YSwgbWF0Y2hUaW1lTXMsIDEsIG1h
dGNoZWQgPyAxIDogMCkpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgewotICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZC50b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7Ci0gICAgICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kLmhpdHMgKz0gMTsKKyAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1h
dGNoaW5nU3RhdHMobV9jdXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/
IDEgOiAwKSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZC50b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLmhpdHMgKz0gMTsKICAgICAgICAgaWYgKG1hdGNoZWQpCi0gICAg
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5tYXRjaGVzICs9IDE7CisgICAgICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5tYXRjaGVzICs9IDE7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBiMzUyYmQ4
YTcxNWUxZTE5MTJjODkwY2VmZGM4YjQwNjRkZTI3ZjQ0Li4wZWNmZDA5NzM5ODAzYTljZTUxODZl
NDBlMzc0MGUyMGMzODcyZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTg4MSw3ICs4ODEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNl
VHJpbQogICAgIH0KIAogICAgICpzZWFyY2hJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpOwotICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIHJlc3VsdHNJdCA9IG1f
c2VhcmNoUmVzdWx0cy5hZGQoKnNlYXJjaElkLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4oKSkuZmly
c3Q7CisgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1
bHRzLmFkZCgqc2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5pdGVyYXRvcjsKIAog
ICAgIGZvciAoTGlzdEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IHJlc3VsdENvbGxlY3Rv
ci5iZWdpbigpOyBpdCAhPSByZXN1bHRDb2xsZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIHJl
c3VsdHNJdC0+c2Vjb25kLmFwcGVuZCgqaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGYyYWFiNGI3ZjRmNTcxZWNm
ZWRkOTMyOGEwNDc4MTU5MGQ3YWNiYTkuLjkyNGJlMzg0MjlmNzQwOTYyM2IyNjc3OTJiYWQwNDU2
MzNkYzg4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVC
cmVhawogCiAgICAgQnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNNYXA6Oml0
ZXJhdG9yIGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRU
b0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5maW5kKGJyZWFrcG9pbnRJZCk7CiAgICAgaWYgKGRl
YnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJZHMuZW5kKCkpCi0gICAgICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElk
c0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5zZXQo
YnJlYWtwb2ludElkLCBWZWN0b3I8U3RyaW5nPigpKS5maXJzdDsKKyAgICAgICAgZGVidWdTZXJ2
ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3RvcjxTdHJpbmc+KCkpLml0ZXJhdG9yOwog
ICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmQuYXBwZW5kKGRlYnVn
U2VydmVyQnJlYWtwb2ludElkKTsKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPiBsb2NhdGlvbiA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNy
ZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXgg
YjNmNjE3MTkzYmY0NDliMmU2M2U5ZjMyYjVhNzMwZGI2MGQ4MjQyNi4uYzkxYWQ4MmU2NWJkYzBm
MWY5ZmUxNzc0NjMwNWM5YTNkZmViOWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaApAQCAtMjgyLDIxICsyODIsMjEgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9yT2JqZWN0OjpzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogewogICAgIEFTU0VSVCh2
YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBpZiAo
bV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5hcHBl
bmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6c2V0T2JqZWN0KGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKQogewog
ICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29u
ZCkKKyAgICBpZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAg
bV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdDo6
c2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZh
bHVlKS5zZWNvbmQpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLmlzTmV3RW50cnkp
CiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGU2MjI5YzQ0ZDU0NjAwY2Y1NGE2Y2I1NGNhMzZiYTM4MjFlZGUyMDYuLjRlNDI5MzhiYjVkNTdk
NjEyYmRmMzUwY2YxOTM0MDQwMjQyNzlhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMDYyLDEw
ICsxMDYyLDEwIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb25zdCBT
dHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBwYWlyPEVudHJ5TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wZW5kaW5nRW50
cmllcy5hZGQodXJsLCB0eXBlKTsKKyAgICBFbnRyeU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cGVuZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQuc2Vj
b25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCB8PSB0eXBlOworICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kIHw9IHR5cGU7
CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphc3NvY2lhdGVEb2N1bWVudExvYWRl
cldpdGhDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlKiBjYWNo
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDE2YTdjY2YyZDM1ZjY0ZWQ0YjBlNTczMjEwYTM2
NzU4MzU3NDRkZjEuLjVkMTAzYjJmZjdiNGNiYTU0ZTAzN2JhNmM4Nzk2MjMwNGQwNWVlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTM0LDExICsxMzQsMTEgQEAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChj
b25zdCBLVVIKIHsKICAgICBBU1NFUlQoIW1hbmlmZXN0VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKTsKIAotICAgIHN0ZDo6cGFpcjxDYWNoZUdyb3VwTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9jYWNoZXNJbk1lbW9yeS5hZGQobWFuaWZlc3RVUkwsIDApOworICAgIENhY2hlR3Jv
dXBNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NhY2hlc0luTWVtb3J5LmFkZChtYW5pZmVzdFVS
TCwgMCk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVChy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29u
ZDsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVChyZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICB9CiAKICAgICAvLyBMb29rIHVwIHRoZSBncm91cCBpbiB0aGUgZGF0YWJhc2UKQEAg
LTE1MCw3ICsxNTAsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogICAgICAgICBtX2NhY2hl
SG9zdFNldC5hZGQodXJsSG9zdEhhc2gobWFuaWZlc3RVUkwpKTsKICAgICB9CiAgICAgCi0gICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBncm91cDsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCA9IGdyb3VwOwogICAgIAogICAgIHJldHVybiBncm91cDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCBhNzFlODUxNTQ2ZmMyMGFiODdjYTc3MjA1NTYxNzRmYzY2NjJl
ZTdjLi4yOTM2NGNkNDEzZmFkZjk0OWRjZTUwZDU2MmQ5YzM5ODg0YTM3ZDBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNTE2LDcgKzM1MTYsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50
KQogICAgICAgICAvLyBFbnN1cmUgdGhpcyB0YXJnZXQncyB0b3VjaCBsaXN0IGV4aXN0cywgZXZl
biBpZiBpdCBlbmRzIHVwIGVtcHR5LCBzbyBpdCBjYW4gYWx3YXlzIGJlIHBhc3NlZCB0byBUb3Vj
aEV2ZW50OjpDcmVhdGUgYmVsb3cuCiAgICAgICAgIFRhcmdldFRvdWNoZXNNYXA6Oml0ZXJhdG9y
IHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5maW5kKHRvdWNoVGFyZ2V0
LmdldCgpKTsKICAgICAgICAgaWYgKHRhcmdldFRvdWNoZXNJdGVyYXRvciA9PSB0b3VjaGVzQnlU
YXJnZXQuZW5kKCkpCi0gICAgICAgICAgICB0YXJnZXRUb3VjaGVzSXRlcmF0b3IgPSB0b3VjaGVz
QnlUYXJnZXQuc2V0KHRvdWNoVGFyZ2V0LmdldCgpLCBUb3VjaExpc3Q6OmNyZWF0ZSgpKS5maXJz
dDsKKyAgICAgICAgICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5z
ZXQodG91Y2hUYXJnZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLml0ZXJhdG9yOwogCiAg
ICAgICAgIC8vIHRvdWNoZXMgYW5kIHRhcmdldFRvdWNoZXMgc2hvdWxkIG9ubHkgY29udGFpbiBp
bmZvcm1hdGlvbiBhYm91dCB0b3VjaGVzIHN0aWxsIG9uIHRoZSBzY3JlZW4sIHNvIGlmIHRoaXMg
cG9pbnQgaXMKICAgICAgICAgLy8gcmVsZWFzZWQgb3IgY2FuY2VsbGVkIGl0IHdpbGwgb25seSBh
cHBlYXIgaW4gdGhlIGNoYW5nZWRUb3VjaGVzIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5j
cHAKaW5kZXggNzMxZTFmYzA3OWI1ZmU5ZmIzOTAwZmI1N2JmMzZlMWQ5NjZhOGZiMi4uZjkzOWM5
YmZkMmEzNzYxOWY2NTc3YmY3ZDI1ZmRmMTcyYjNhMDczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdy
b3VwLmNwcApAQCAtOTAsMTUgKzkwLDE1IEBAIFBhZ2VHcm91cCogUGFnZUdyb3VwOjpwYWdlR3Jv
dXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCiAgICAgaWYgKCFwYWdlR3JvdXBzKQogICAgICAg
ICBwYWdlR3JvdXBzID0gbmV3IFBhZ2VHcm91cE1hcDsKIAotICAgIHBhaXI8UGFnZUdyb3VwTWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gcGFnZUdyb3Vwcy0+YWRkKGdyb3VwTmFtZSwgMCk7
CisgICAgUGFnZUdyb3VwTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gcGFnZUdyb3Vwcy0+YWRkKGdy
b3VwTmFtZSwgMCk7CiAKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQo
IXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBu
ZXcgUGFnZUdyb3VwKGdyb3VwTmFtZSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IG5ldyBQYWdlR3JvdXAoZ3JvdXBOYW1lKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgIHJldHVybiByZXN1bHQuZmlyc3Qt
PnNlY29uZDsKKyAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OmNsb3NlTG9j
YWxTdG9yYWdlKCkKQEAgLTE5Nyw3ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBQYWdlR3JvdXA6OmFk
ZFZpc2l0ZWRMaW5rKExpbmtIYXNoIGhhc2gpCiB7CiAgICAgQVNTRVJUKHNob3VsZFRyYWNrVmlz
aXRlZExpbmtzKTsKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKCFtX3Zpc2l0ZWRM
aW5rSGFzaGVzLmFkZChoYXNoKS5zZWNvbmQpCisgICAgaWYgKCFtX3Zpc2l0ZWRMaW5rSGFzaGVz
LmFkZChoYXNoKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBQYWdl
Ojp2aXNpdGVkU3RhdGVDaGFuZ2VkKHRoaXMsIGhhc2gpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZv
aWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgT3duUHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQg
PSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xp
c3QsIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKSk7CiAgICAgaWYgKCFtX3VzZXJTY3Jp
cHRzKQogICAgICAgICBtX3VzZXJTY3JpcHRzID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRNYXAp
OwotICAgIE93blB0cjxVc2VyU2NyaXB0VmVjdG9yPiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJT
Y3JpcHRzLT5hZGQod29ybGQsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPFVz
ZXJTY3JpcHRWZWN0b3I+JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3Js
ZCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXNjcmlwdHNJbldvcmxkKQog
ICAgICAgICBzY3JpcHRzSW5Xb3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU2NyaXB0VmVjdG9yKTsK
ICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKHVzZXJTY3JpcHQucmVsZWFzZSgpKTsKQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERP
TVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgcwogICAgIE93blB0cjxVc2VyU3R5
bGVTaGVldD4gdXNlclN0eWxlU2hlZXQgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hlZXQoc291
cmNlLCB1cmwsIHdoaXRlbGlzdCwgYmxhY2tsaXN0LCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpKTsK
ICAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzKQogICAgICAgICBtX3VzZXJTdHlsZVNoZWV0cyA9
IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldE1hcCk7Ci0gICAgT3duUHRyPFVzZXJTdHlsZVNo
ZWV0VmVjdG9yPiYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMtPmFkZCh3
b3JsZCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRW
ZWN0b3I+JiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxk
LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3R5bGVTaGVldHNJbldvcmxk
KQogICAgICAgICBzdHlsZVNoZWV0c0luV29ybGQgPSBhZG9wdFB0cihuZXcgVXNlclN0eWxlU2hl
ZXRWZWN0b3IpOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKHVzZXJTdHlsZVNoZWV0
LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDkz
MWYyNjAzZmQ0ZjIyMWI0YjVkZTNhY2RjMzdkOTc2ZDEzZGYyMjcuLmMyYTVhYjExNDM1ZWY2ZGIw
NTc2OGM3NmNhMDM1N2I1NjI1ODMzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwCkBAIC0xMzEsMTEgKzEzMSwxMSBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogICAg
ICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRv
U3RyaW5nKCk7Ci0gICAgcGFpcjxPcmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKLSAgICBp
ZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBhZG9wdFB0
cihuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKKyAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRy
KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kID0gYWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CiAKLSAgICBPcmln
aW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAg
ICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5n
ZXQoKTsKICAgICBsaXN0LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3Jp
Z2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNh
bGxvd1N1YmRvbWFpbnMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9U
b3VjaEFkanVzdG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQu
Y3BwCmluZGV4IGRkMDU0NjE4ZDBmODBhODAyNjI2ODVkOGIwZjRhOTk3YmIxM2I1MzguLmRhNjNh
ZmE2NGRjYzUxMmI0NTdiMWEwYzU2YTk5MmE2N2RhNDljZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RvdWNoQWRqdXN0bWVudC5jcHAKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIGNvbXBpbGVTdWJ0
YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9t
ZXRyeUxpcwogICAgICAgICAgICAgICAgIHJlc3BvbmRpbmdOb2RlID0gdmlzaXRlZE5vZGU7CiAg
ICAgICAgICAgICAgICAgLy8gQ29udGludWUgdGhlIGl0ZXJhdGlvbiB0byBjb2xsZWN0IHRoZSBh
bmNlc3RvcnMgb2YgdGhlIHJlc3BvbmRlciwgd2hpY2ggd2Ugd2lsbCBuZWVkIGxhdGVyLgogICAg
ICAgICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXI8SGFzaFNldDxOb2RlKj46Oml0
ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3BvbmRlcnNTZXQuYWRkKHZp
c2l0ZWROb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQor
ICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PE5vZGUqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKaW5k
ZXggNGI4MjNiMTJiNzhiNjVkY2M3NWJjMTExNzYyNjgxNDA2NmYyODVmOS4uNGJjN2MyZTYwN2Vh
YjNlMGI0NzM2MGE2MjI2ZTFhMjdhNTIwOGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9p
ZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXIoaW50IGludGVnZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIG1faW50ZWdlclplcm9PYmplY3RSZWZlcmVuY2UgPSBt
X2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2lu
dGVnZXJzLmFkZChpbnRlZ2VyLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UpLnNlY29uZCkKKyAg
ICAgICAgaWYgKCFtX2ludGVnZXJzLmFkZChpbnRlZ2VyLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVu
Y2UpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgICsrbV9jdXJy
ZW50T2JqZWN0UmVmZXJlbmNlOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgQmluYXJ5UHJvcGVy
dHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKGludCBpbnRlZ2VyKQogdm9pZCBCaW5hcnlQcm9wZXJ0
eUxpc3RQbGFuOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICArK21f
Y3VycmVudEFnZ3JlZ2F0ZVNpemU7Ci0gICAgaWYgKCFtX3N0cmluZ3MuYWRkKHN0cmluZywgbV9j
dXJyZW50T2JqZWN0UmVmZXJlbmNlKS5zZWNvbmQpCisgICAgaWYgKCFtX3N0cmluZ3MuYWRkKHN0
cmluZywgbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm47CiAgICAgKyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7CiAgICAgd3JpdGVTdHJpbmdPYmpl
Y3Qoc3RyaW5nKTsKQEAgLTIyNCwxMiArMjI0LDEyIEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0
UGxhbjo6d3JpdGVJbnRlZ2VyQXJyYXkoY29uc3QgaW50KiBpbnRlZ2Vycywgc2l6ZV90IHNpemUp
CiB7CiAgICAgc2l6ZV90IHNhdmVkQWdncmVnYXRlU2l6ZSA9ICsrbV9jdXJyZW50QWdncmVnYXRl
U2l6ZTsKICAgICBBU1NFUlQoc2l6ZSk7Ci0gICAgcGFpcjxJbnRlZ2VyQXJyYXlNYXA6Oml0ZXJh
dG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX2ludGVnZXJBcnJheXMuYWRkKEludGVnZXJBcnJheShp
bnRlZ2Vycywgc2l6ZSksIDApOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICBJbnRl
Z2VyQXJyYXlNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2ludGVnZXJBcnJheXMuYWRkKElu
dGVnZXJBcnJheShpbnRlZ2Vycywgc2l6ZSksIDApOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3
RW50cnkpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKICAgICAgICAgd3JpdGVJbnRlZ2VyKGludGVnZXJzW2ldKTsKLSAgICBhZGRSZXN1bHQu
Zmlyc3QtPnNlY29uZCA9IG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSsrOworICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kID0gbV9jdXJyZW50T2JqZWN0UmVmZXJlbmNlKys7CiAgICAgd3Jp
dGVBcnJheU9iamVjdChzaXplKTsKICAgICBtX2N1cnJlbnRBZ2dyZWdhdGVTaXplID0gc2F2ZWRB
Z2dyZWdhdGVTaXplOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXggMWI1YTczMTllNDJkOWRm
MTRiZDI1OTUxMTMxOTE2MmU4NzE1YzE3NS4uZDUxN2FhYTdiNDAyNDQ4OTMyZGQ0MmJmOWRhYjQw
ZDEwMmE4ZDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC00MjgsMTggKzQyOCwxOCBAQCB2
b2lkIExheWVyVGlsZXI6OnByb2Nlc3NUZXh0dXJlSm9iKGNvbnN0IFRleHR1cmVKb2ImIGpvYiwg
VGlsZUpvYnNNYXAmIHRpbGVKb2JzTQogdm9pZCBMYXllclRpbGVyOjphZGRUaWxlSm9iKGNvbnN0
IFRpbGVJbmRleCYgaW5kZXgsIGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgVGlsZUpvYnNNYXAmIHRp
bGVKb2JzTWFwKQogewogICAgIC8vIEhhc2hNYXA6OmFkZCBhbHdheXMgcmV0dXJucyBhIHZhbGlk
IGl0ZXJhdG9yIGV2ZW4gdGhlIGtleSBhbHJlYWR5IGV4aXN0cy4KLSAgICBwYWlyPFRpbGVKb2Jz
TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9i
KTsKKyAgICBUaWxlSm9ic01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHRpbGVKb2JzTWFwLmFkZChp
bmRleCwgJmpvYik7CiAKICAgICAvLyBTdWNjZXNzZnVsbHkgYWRkZWQgdGhlIG5ldyBqb2IuCi0g
ICAgaWYgKHJlc3VsdC5zZWNvbmQpCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgbGVhdmUgdGhlIHByZXZpb3VzIGpv
Yi4KLSAgICBpZiAoam9iLm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXJ0eUNvbnRlbnRzICYmIHJl
c3VsdC5maXJzdC0+c2Vjb25kLT5tX3R5cGUgPT0gVGV4dHVyZUpvYjo6RGlzY2FyZENvbnRlbnRz
KQorICAgIGlmIChqb2IubV90eXBlID09IFRleHR1cmVKb2I6OkRpcnR5Q29udGVudHMgJiYgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQtPm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVu
dHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE92ZXJyaWRlIHRoZSBwcmV2aW91cyBqb2Iu
Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSAmam9iOworICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kID0gJmpvYjsKIH0KIAogdm9pZCBMYXllclRpbGVyOjpwZXJmb3JtVGlsZUpvYihMYXll
clRpbGUqIHRpbGUsIGNvbnN0IFRleHR1cmVKb2ImIGpvYiwgY29uc3QgSW50UmVjdCYgdGlsZVJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCBmNmNjYjk1ZDdlNzEwYTNjMTNmNjFmMjIwMzY3ODBlYmVi
Njc3NWIzLi4xYzAxYjY5YzgyMmYxNDJiMzM2OWI1OTU3NzIxYTc0MjFiM2UyNmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKQEAgLTI0ODgsMTYgKzI0ODgsMTYgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgUGwK
ICAgICAvLyBBZGQgd2l0aCBhIGR1bW15IHZhbHVlIHRvIGdldCBhbiBpdGVyYXRvciBmb3IgdGhl
IGluc2VydGlvbiBwb3NpdGlvbiwgYW5kIGEgYm9vbGVhbiB0aGF0IHRlbGxzCiAgICAgLy8gdXMg
d2hldGhlciB0aGVyZSdzIGFuIGl0ZW0gdGhlcmUuIFRoaXMgdGVjaG5pcXVlIGF2b2lkcyB0d28g
aGFzaCBsb29rdXBzLgogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGR1bW15OwotICAgIHBh
aXI8TGF5ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9u
ZUlELCBkdW1teSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKSB7CisgICAgTGF5ZXJNYXA6
OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7CisgICAg
aWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFk
ZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFkeS4KLSAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1
bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQu
aXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHRMYXll
ciA9IGNsb25lTGF5ZXIoc291cmNlTGF5ZXIsIGNsb25lTGV2ZWwpOwogI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgcmVzdWx0TGF5ZXItPnNldE5hbWUoU3RyaW5nOjpmb3JtYXQoIkNsb25lICVkIG9m
IGxheWVyICVwIiwgY2xvbmVJRFswVV0sIHNvdXJjZUxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsK
ICNlbmRpZgotICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3VsdExheWVyOwor
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHJlc3VsdExheWVyOwogICAgIH0K
IAogICAgIHJldHVybiByZXN1bHRMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCmluZGV4IGQ5MzJjMWY3MjMxMmUwZThj
ODg5NzQ3Y2ZiYTE5YmY3ZTJhNWQ1MGYuLjA5N2RmYmZjNmMwNWI1N2ZiZTRiZDI3NTk1ZTg1YmMw
NTBjOWE3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9UaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1RpbGVDYWNoZS5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgVGlsZUNhY2hlOjpy
ZXZhbGlkYXRlVGlsZXMoKQogICAgICAgICAgICAgVGlsZUluZGV4IHRpbGVJbmRleCh4LCB5KTsK
IAogICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxlSW5kZXgodGlsZUlu
ZGV4KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+JiB0aWxlTGF5ZXIgPSBt
X3RpbGVzLmFkZCh0aWxlSW5kZXgsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBSZXRh
aW5QdHI8V2ViVGlsZUxheWVyPiYgdGlsZUxheWVyID0gbV90aWxlcy5hZGQodGlsZUluZGV4LCAw
KS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKCF0aWxlTGF5ZXIpIHsKICAgICAg
ICAgICAgICAgICB0aWxlTGF5ZXIgPSBjcmVhdGVUaWxlTGF5ZXIodGlsZVJlY3QpOwogICAgICAg
ICAgICAgICAgIFttX3RpbGVDb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjp0aWxlTGF5
ZXIuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCmluZGV4IDAwYzYzMDgwZGZj
NzdlNGI4YzQyYjE2ZTZkYTY4MDk5OTkxNzdkYTguLmI0ZmVhZWU2ODJkOGM0NDU5YTgyYmZhNmRk
OWRlZjY5NjZhM2FiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6TGF5ZXJDaGFuZ2VzRmx1c2hlcigpCiAKIHZv
aWQgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbihBYnN0
cmFjdENBQ0ZMYXllclRyZWVIb3N0KiBob3N0KQogewotICAgIGlmICghbV9ob3N0c1dpdGhDaGFu
Z2VzVG9GbHVzaC5hZGQoaG9zdCkuc2Vjb25kIHx8IG1faG9vaykKKyAgICBpZiAoIW1faG9zdHNX
aXRoQ2hhbmdlc1RvRmx1c2guYWRkKGhvc3QpLmlzTmV3RW50cnkgfHwgbV9ob29rKQogICAgICAg
ICByZXR1cm47CiAKICAgICBzZXRIb29rKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdp
bi5jcHAKaW5kZXggNzExYjg5NmFjNjEyODgzNjJlZDcyZWRmNzJhNDcwOTJmZTcyMjRiZS4uY2M1
MmM1MmViNzA1NzgyZGUxZjk2OGRjODAzYzQ1ZTRmMmFlMjI5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRV
dGlsc0Nocm9taXVtV2luLmNwcApAQCAtNDE0LDggKzQxNCw4IEBAIGJvb2wgZ2V0RGVyaXZlZEZv
bnREYXRhKGNvbnN0IFVDaGFyKiBmYW1pbHksCiAgICAgICAgIC8vIGEgZm9udCBldmVuIGlmIHRo
ZXJlJ3Mgbm8gZm9udCBtYXRjaGluZyB0aGUgbmFtZS4gTmVlZCB0bwogICAgICAgICAvLyBjaGVj
ayBpdCBhZ2FpbnN0IHdoYXQgd2UgYWN0dWFsbHkgd2FudCAoYXMgaXMgZG9uZSBpbgogICAgICAg
ICAvLyBGb250Q2FjaGVXaW4uY3BwKQotICAgICAgICBwYWlyPEZvbnREYXRhQ2FjaGU6Oml0ZXJh
dG9yLCBib29sPiBlbnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZvbnREYXRhKCkp
OwotICAgICAgICBkZXJpdmVkID0gJmVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIEZvbnRE
YXRhQ2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGZvbnREYXRhQ2FjaGUuYWRkKGZvbnRLZXksIEZv
bnREYXRhKCkpOworICAgICAgICBkZXJpdmVkID0gJmVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgIGRlcml2ZWQtPmhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KGxvZ2ZvbnQpOwogICAg
ICAgICAvLyBHZXRBc2NlbnQgbWF5IHJldHVybiBrVW5kZWZpbmVkQXNjZW50LCBidXQgd2Ugc3Rp
bGwgd2FudCB0bwogICAgICAgICAvLyBjYWNoZSBpdCBzbyB0aGF0IHdlIHdvbid0IGhhdmUgdG8g
Y2FsbCBDcmVhdGVGb250SW5kaXJlY3Qgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDM3MmEwZTA4ZThmM2IyN2M3NDVlYjQ1YjE1
MjM1Mzk0ZTcyMDI2Y2IuLjk4ZWYyNTRhYTk4ZjU4MjI4N2YyNDYxODIyNzcwNjg2NDRmYzRmM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFy
dEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdQogICAgICAgICAgICAg
Ly8gb2YgYmxvY2tlZCBwcm9wZXJ0aWVzLgogICAgICAgICAgICAgYm9vbCBudWxsSW50ZXJzZWN0
aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoVGFyZ2V0UHJvcGVydGllczo6aXRlcmF0b3Ig
cEl0ZXIgPSBlbnF1ZXVlZFByb3BlcnRpZXMuYmVnaW4oKTsgcEl0ZXIgIT0gZW5xdWV1ZWRQcm9w
ZXJ0aWVzLmVuZCgpOyArK3BJdGVyKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFibG9ja2VkUHJv
cGVydGllcy5hZGQoKnBJdGVyKS5zZWNvbmQpCisgICAgICAgICAgICAgICAgaWYgKCFibG9ja2Vk
UHJvcGVydGllcy5hZGQoKnBJdGVyKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICBu
dWxsSW50ZXJzZWN0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJB
VFNVSS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQVRTVUkuY3BwCmluZGV4IDA0MzdiY2RmYzA5Yjk2N2RhN2ZlMTk2ZjI3YmYy
ZTBlNzEyMmVkOTkuLmJlOWY3NDEwNGZlNzQzNDQ1NzE1NjQxNjNjZjdhYWQ3MGUwNzJjNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJBVFNVSS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcApAQCAtMjc4LDE1ICsyNzgsMTUg
QEAgc3RhdGljIHZvaWQgZGlzYWJsZUxpZ2F0dXJlcyhjb25zdCBTaW1wbGVGb250RGF0YSogZm9u
dERhdGEsIEFUU1VTdHlsZSBhdHN1U3R5bGUKIHN0YXRpYyBBVFNVU3R5bGUgaW5pdGlhbGl6ZUFU
U1VTdHlsZShjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIFR5cGVzZXR0aW5nRmVhdHVy
ZXMgdHlwZXNldHRpbmdGZWF0dXJlcykKIHsKICAgICB1bnNpZ25lZCBrZXkgPSB0eXBlc2V0dGlu
Z0ZlYXR1cmVzICsgMTsKLSAgICBwYWlyPEhhc2hNYXA8dW5zaWduZWQsIEFUU1VTdHlsZT46Oml0
ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAuYWRkKGtl
eSwgMCk7Ci0gICAgQVRTVVN0eWxlJiBhdHN1U3R5bGUgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29u
ZDsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQVRT
VVN0eWxlPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5h
ZGQoa2V5LCAwKTsKKyAgICBBVFNVU3R5bGUmIGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVy
biBhdHN1U3R5bGU7CiAKICAgICBBVFNVRm9udElEIGZvbnRJRCA9IGZvbnREYXRhLT5wbGF0Zm9y
bURhdGEoKS5jdEZvbnQoKSA/IENURm9udEdldFBsYXRmb3JtRm9udChmb250RGF0YS0+cGxhdGZv
cm1EYXRhKCkuY3RGb250KCksIDApIDogMDsKICAgICBpZiAoIWZvbnRJRCkgewogICAgICAgICBM
T0dfRVJST1IoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3IgJXAiLCBmb250RGF0YS0+cGxh
dGZvcm1EYXRhKCkuZm9udCgpKTsKLSAgICAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLnJl
bW92ZShhZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAu
cmVtb3ZlKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggODMyYmI5ZGRmOGRhMTI5OGZkMzkz
MjU2Mjg0ZDA0ZTYzNThmMjQyNi4uMDUxOTM3NDJjNTg1MmRiZTljOWNlZDY0YjlhMDdhYWQyYzFl
YTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Np
bXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAtNDIsOSArNDIsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBDRkRpY3Rpb25hcnlSZWYgU2ltcGxlRm9udERhdGE6OmdldENG
U3RyaW5nQXR0cmlidXRlcyhUeXBlc2V0dGluZ0ZlYXR1cmVzIHR5cGVzZXR0aW5nRmVhdHVyZXMs
IEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3QKIHsKICAgICB1bnNpZ25lZCBrZXkg
PSB0eXBlc2V0dGluZ0ZlYXR1cmVzICsgMTsKLSAgICBwYWlyPEhhc2hNYXA8dW5zaWduZWQsIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+ID46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBt
X0NGU3RyaW5nQXR0cmlidXRlcy5hZGQoa2V5LCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPigp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgYXR0cmlidXRlc0RpY3Rpb25hcnkg
PSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gPjo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+KCkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRy
aWJ1dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzRGljdGlvbmFy
eS5nZXQoKTsKICAgICAKICAgICBib29sIHRyZWF0TGluZUFzVmVydGljYWwgPSBvcmllbnRhdGlv
biA9PSBWZXJ0aWNhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQppbmRleCA4ZjRhOTE5M2VmNGQ1MzI3MWJl
NTRiMGRjNWVmYmQ5ZGViYWJkYzQ1Li43NGIyNjg2ZDZjZTYwYmJmYTcwYWEwYjIyNTMzNWI5NjAz
MjM2NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCkBAIC00NDAsOSArNDQwLDkgQEAgYm9vbCBTaW1w
bGVGb250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMKICAgICBpZiAoIW1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBw
b3J0KQogICAgICAgICBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydCA9IGFkb3B0
UHRyKG5ldyBIYXNoTWFwPFN0cmluZywgYm9vbD4pOwogCi0gICAgcGFpcjxXVEY6Okhhc2hNYXA8
U3RyaW5nLCBib29sPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fY29tYmluaW5nQ2hh
cmFjdGVyU2VxdWVuY2VTdXBwb3J0LT5hZGQoU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCksIGZh
bHNlKTsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBhZGRSZXN1
bHQuZmlyc3QtPnNlY29uZDsKKyAgICBXVEY6Okhhc2hNYXA8U3RyaW5nLCBib29sPjo6QWRkUmVz
dWx0IGFkZFJlc3VsdCA9IG1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0LT5hZGQo
U3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCksIGZhbHNlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAK
ICAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRvcHRDRiwgQ1RGb250Q29weUdyYXBo
aWNzRm9udChwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkpOwogCkBAIC00NjIsNyArNDYyLDcg
QEAgYm9vbCBTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVu
Y2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHRydWU7CisgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0
Zm9ybURhdGEuY3BwCmluZGV4IDY5MmZkNmQwZDFmMWRiODFhZDI5NzJhM2YzMzQzN2JlZjZmZTYz
NWQuLjE5NzkwYWQ0OWIzMzAzZGQ3YjYyYzdlN2EwYTgyMzY3N2I0Y2ZmNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0
Zm9ybURhdGEuY3BwCkBAIC0yODUsMTEgKzI4NSwxMSBAQCBQYXNzUmVmUHRyPEZpeGVkU2l6ZUZv
bnREYXRhPiBGaXhlZFNpemVGb250RGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aQogc3RhdGljIFBhc3NSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+IGNyZWF0ZUZpeGVkU2l6ZUZv
bnREYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCB1bnNpZ25lZCB3ZWlnaHQsIGJvb2wg
aXRhbGljKQogewogICAgIEZpeGVkU2l6ZUZvbnREYXRhS2V5IGtleShmYW1pbHksIHdlaWdodCwg
aXRhbGljKTsKLSAgICBwYWlyPEZpeGVkU2l6ZUZvbnRDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IGdfZml4ZWRTaXplRm9udENhY2hlLmFkZChrZXksIFJlZlB0cjxGaXhlZFNpemVGb250
RGF0YT4oKSk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1pbHksIHdlaWdodCwgaXRhbGlj
KTsKKyAgICBGaXhlZFNpemVGb250Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnX2ZpeGVkU2l6
ZUZvbnRDYWNoZS5hZGQoa2V5LCBSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+KCkpOworICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBG
aXhlZFNpemVGb250RGF0YTo6Y3JlYXRlKGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOwogCi0gICAg
cmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKIH0KIAogc3RhdGljIExPTkcgdG9HRElGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9u
dFdlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
My5jcHAKaW5kZXggYTY2OWJjOGVmODUyM2Q0ODY2ZjFlYjgwYTI1MTIzMzAyYWQ0YzQ1Yi4uNzIw
ZjBmZDM2MDFhZDU1YzQxZjA0OGRhMzhlOTBiMTQwYzc4NDJhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKQEAgLTc3LDkgKzc3LDkgQEAg
c3RhdGljIFN0eWxlQ29udGV4dE1hcCYgc3R5bGVDb250ZXh0TWFwKCkKIAogc3RhdGljIEd0a1N0
eWxlQ29udGV4dCogZ2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiB7Ci0gICAgc3Rk
OjpwYWlyPFN0eWxlQ29udGV4dE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0eWxlQ29u
dGV4dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0g
ICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBTdHlsZUNvbnRl
eHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzdHlsZUNvbnRleHRNYXAoKS5hZGQod2lkZ2V0VHlw
ZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogCiAgICAgR3RrV2lkZ2V0UGF0aCogcGF0aCA9IGd0
a193aWRnZXRfcGF0aF9uZXcoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfYXBwZW5kX3R5cGUocGF0
aCwgd2lkZ2V0VHlwZSk7CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIEd0a1N0eWxlQ29udGV4
dCogZ2V0U3R5bGVDb250ZXh0KEdUeXBlIHdpZGdldFR5cGUpCiAgICAgZ3RrX3N0eWxlX2NvbnRl
eHRfc2V0X3BhdGgoY29udGV4dC5nZXQoKSwgcGF0aCk7CiAgICAgZ3RrX3dpZGdldF9wYXRoX2Zy
ZWUocGF0aCk7CiAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGNvbnRleHQ7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBjb250ZXh0OwogICAgIHJldHVybiBjb250ZXh0LmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hl
Y2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW0KaW5kZXgg
NDc5MjE5MTk2ODZmN2FhYzYzNmQ5MTI5NGZmMTRlMTAzNGY0NzNkZS4uODlmZWYwMzA5Yzk0OTk0
MmUyNGRhMWMyNmQzOWE1OGQ1N2QxNDVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaHJlYWRDaGVjay5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViQ29yZVJlcG9ydFRo
cmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbiwgV2ViQ29yZTo6VGhyZWFkVmlvbGF0
aW9uCiAgICAgICAgIGNhc2UgTm9UaHJlYWRDaGVjazoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIExvZ09uRmlyc3RUaHJlYWRWaW9sYXRpb246Ci0gICAgICAgICAgICBpZiAobG9n
Z2VkRnVuY3Rpb25zLmFkZChmdW5jdGlvbikuc2Vjb25kKSB7CisgICAgICAgICAgICBpZiAobG9n
Z2VkRnVuY3Rpb25zLmFkZChmdW5jdGlvbikuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAg
IE5TTG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9sYXRpb24gLSAlcyBjYWxsZWQgZnJvbSBzZWNv
bmRhcnkgdGhyZWFkIiwgZnVuY3Rpb24pOwogICAgICAgICAgICAgICAgIE5TTG9nKEAiQWRkaXRp
b25hbCB0aHJlYWRpbmcgdmlvbGF0aW9ucyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBs
b2dnZWQuIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCA0NGM1NjgxZmJiZDUzNDhiMjAxNDkzNTFm
YTM2ODMyZDc5NTgyNjI4Li41MDA5MWUxOWQzYWY1NmZmNGE4ZGYxNzViZjg5Nzg3MDA3NjE0Mjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmdldChuYW1lKTsKIH0KIAotcGFpcjxIVFRQSGVh
ZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0hUVFBIZWFkZXJNYXA6OkFkZFJlc3Vs
dCBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogewogICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBD
YXNlRm9sZGluZ0hhc2g+OjphZGQobmFtZSwgdmFsdWUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBA
IGJvb2wgSFRUUEhlYWRlck1hcDo6Y29udGFpbnMoY29uc3QgY2hhciogbmFtZSkgY29uc3QKICAg
ICByZXR1cm4gZmluZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRvcj4o
bmFtZSkgIT0gZW5kKCk7CiB9CiAKLXBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+
IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQorSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHJldHVybiBIYXNoTWFwPEF0b21p
Y1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjphZGQ8Y29uc3QgY2hhciosIENhc2VG
b2xkaW5nQ1N0cmluZ1RyYW5zbGF0b3I+KG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggMDIwNzFlMzYxMGMx
ZDRiNGZjZGY0ZDZjOTU5YjQ5Zjg3ZjNhNWYxNS4uMTJiZGUwNjg5N2U3Y2UzZjNlYzkwMTJlMWMz
N2ZkZmZlOGQ4OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmgKQEAgLTUxLDEyICs1MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIAogICAgICAgICBTdHJpbmcgZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3Q7CiAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAv
LyBBbHRlcm5hdGUgYWNjZXNzb3JzIHRoYXQgYXJlIGZhc3RlciB0aGFuIGNvbnZlcnRpbmcgdGhl
IGNoYXIqIHRvIEF0b21pY1N0cmluZyBmaXJzdC4KICAgICAgICAgYm9vbCBjb250YWlucyhjb25z
dCBjaGFyKikgY29uc3Q7CiAgICAgICAgIFN0cmluZyBnZXQoY29uc3QgY2hhciopIGNvbnN0Owot
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgICAgIAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmlu
ZGV4IDQzYTY0ZTk3MDcyNDA0MDQyMjdkY2IwZDVlMjU2ZDM3NGI4NzM1OWEuLjM1MDk3OTI5Mjc4
Yzc2MDY0YzRiMGRlYjlhZmUzOWZmMTliZTRjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMzcxLDkg
KzM3MSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0UHJpb3JpdHkoUmVzb3VyY2VM
b2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBI
ZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
IAogewogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIHBhaXI8SFRUUEhlYWRlck1h
cDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxkcy5hZGQobmFtZSwg
dmFsdWUpOyAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kICs9ICIsIiArIHZhbHVlOworICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtX2h0dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCIgKyB2
YWx1ZTsKIAogICAgIGlmICh1cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAg
IG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAzZTU5OGJhYjZiOWE4NTBhNWE2Y2M5MjhjMDA2OWMw
ODkzYTgxMDllLi42ZTgxNGFlYjVlZjlkNjNlMDYyMGZhYjgyYjZiMmQ3MzY2NmYzNWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzIzLDcgKzMyMyw3
IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmFkZChQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+IHBy
cFBhY2thZ2UpCiAKICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IHBycFBhY2th
Z2U7CiAKLSAgICBpZiAoIW1fcGx1Z2lucy5hZGQocGFja2FnZSkuc2Vjb25kKQorICAgIGlmICgh
bV9wbHVnaW5zLmFkZChwYWNrYWdlKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBtX3BsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZSk7CkBA
IC01NzQsNyArNTc0LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRh
ZGF0YUNhY2hlKCkKIAogICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBs
dWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2VGcm9tQ2FjaGUocGF0aCwgbGFzdE1vZGlmaWVkLCBu
YW1lLCBkZXNjLCBtaW1lRGVzYyk7CiAKLSAgICAgICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1
Z2lucy5hZGQocGFja2FnZSkuc2Vjb25kKSB7CisgICAgICAgIGlmIChwYWNrYWdlICYmIGNhY2hl
ZFBsdWdpbnMuYWRkKHBhY2thZ2UpLmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIGNhY2hlZFBs
dWdpblBhdGhzV2l0aFRpbWVzLmFkZChwYWNrYWdlLT5wYXRoKCksIHBhY2thZ2UtPmxhc3RNb2Rp
ZmllZCgpKTsKICAgICAgICAgICAgIGNhY2hlZFBsdWdpbnNCeVBhdGguYWRkKHBhY2thZ2UtPnBh
dGgoKSwgcGFja2FnZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
d2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCAyNzEyMWM2NjRlM2M2YjZiYzZiNWQ2ZWRk
YmJhYmJjZjcyYjc2OWVkLi5mZmI0MjFhNGM0MjhhY2U5MjRkZjMzM2UwYTAwODUxOTYzNjEwMWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4u
Y3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0
aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9ICppdCArICJc
XCIgKyBmaWxlbmFtZTsKLSAgICAgICAgICAgIGlmICghdW5pcXVlRmlsZW5hbWVzLmFkZChmdWxs
UGF0aCkuc2Vjb25kKQorICAgICAgICAgICAgaWYgKCF1bmlxdWVGaWxlbmFtZXMuYWRkKGZ1bGxQ
YXRoKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBwYXRocy5hZGQoZnVsbFBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggNjU3MDc0NzdkNzA1MjBmNjg2NDYwODdjMTJhNzIxZmYyNGVmNmQzYi4uODM2
MmFhZTNlNjc1MmExMTI3YTBjOWMwNWQ1Njk3YzY3MGZiMWVmMyAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zODMzLDcgKzM4MzMsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrOjphZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJCb3gqIGRlc2NlbmRhbnQp
CiAgICAgICAgIGRlc2NlbmRhbnRTZXQgPSBuZXcgSGFzaFNldDxSZW5kZXJCb3gqPjsKICAgICAg
ICAgZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+c2V0KHRoaXMsIGRlc2NlbmRhbnRTZXQp
OwogICAgIH0KLSAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQp
LnNlY29uZDsKKyAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQp
LmlzTmV3RW50cnk7CiAgICAgaWYgKCFhZGRlZCkgewogICAgICAgICBBU1NFUlQoZ1BlcmNlbnRI
ZWlnaHRDb250YWluZXJNYXAtPmdldChkZXNjZW5kYW50KSk7CiAgICAgICAgIEFTU0VSVChnUGVy
Y2VudEhlaWdodENvbnRhaW5lck1hcC0+Z2V0KGRlc2NlbmRhbnQpLT5jb250YWlucyh0aGlzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCmluZGV4IGU1ZDU5YmI4ZTBhMjFkMmUzNjAwNzYwNzk4NWNhMTdjYjM2ZGEyMjYuLjlkZDIx
ODEyNTAyNWYyOTNhODZiNTY1OTdjOGI3NmYyMTg0Y2Q1ZjIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC02NjIsMTQgKzY2
MiwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihSb290
SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBydQogICAgIHJ1bi0+bV9ib3gtPnNldExvZ2lj
YWxXaWR0aChyZW5kZXJlci0+d2lkdGgocnVuLT5tX3N0YXJ0LCBydW4tPm1fc3RvcCAtIHJ1bi0+
bV9zdGFydCwgeFBvcywgbGluZUluZm8uaXNGaXJzdExpbmUoKSwgJmZhbGxiYWNrRm9udHMsICZn
bHlwaE92ZXJmbG93KSArIGh5cGhlbldpZHRoKTsKICAgICBpZiAoIWZhbGxiYWNrRm9udHMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChydW4tPm1fYm94LT5pc1RleHQoKSk7Ci0gICAgICAg
IEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hE
YXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3gocnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8
Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBHbHlwaE92ZXJmbG93KCkpKS5maXJzdDsKKyAgICAg
ICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJv
eERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rv
cjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwog
ICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5maXJzdC5pc0VtcHR5KCkpOwogICAgICAgICBjb3B5
VG9WZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnNlY29uZC5maXJzdCk7CiAgICAgICAgIHJ1bi0+
bV9ib3gtPnBhcmVudCgpLT5jbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFz
ZWxpbmUoKTsKICAgICB9CiAgICAgaWYgKChnbHlwaE92ZXJmbG93LnRvcCB8fCBnbHlwaE92ZXJm
bG93LmJvdHRvbSB8fCBnbHlwaE92ZXJmbG93LmxlZnQgfHwgZ2x5cGhPdmVyZmxvdy5yaWdodCkp
IHsKICAgICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKLSAgICAgICAgR2x5cGhP
dmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAu
YWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBT
aW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLmZpcnN0OworICAgICAgICBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1h
cC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0
IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAg
IGl0LT5zZWNvbmQuc2Vjb25kID0gZ2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5tX2JveC0+
Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDhjMWI2YmYxOWI3
M2E1OGIwNDcyODhlOTU1YTU5ZDY1NWYyNjNhOWIuLmRhYjVkN2IyMWU3YWU5ZjBkZDljMDBhNTg3
NDAyYWRhMWFjN2ZjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yMTcsOCArMjE3LDggQEAgdm9pZCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OmNoZWNrSW52YWxpZFJlZ2lvbnMoKQogCiB2b2lkIFJlbmRlck5hbWVkRmxv
d1RocmVhZDo6YWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJOYW1lZEZsb3dUaHJlYWQq
IG90aGVyRmxvd1RocmVhZCkKIHsKLSAgICBzdGQ6OnBhaXI8UmVuZGVyTmFtZWRGbG93VGhyZWFk
Q291bnRlZFNldDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFk
c1NldC5hZGQob3RoZXJGbG93VGhyZWFkKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAg
IFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50ZWRTZXQ6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xh
eW91dEJlZm9yZVRocmVhZHNTZXQuYWRkKG90aGVyRmxvd1RocmVhZCk7CisgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2Ugc2Vl
IHRoaXMgZGVwZW5kZW5jeS4gTWFrZSBzdXJlIHdlIHJlY2FsY3VsYXRlIGFsbCB0aGUgZGVwZW5k
ZW5jaWVzLgogICAgICAgICB2aWV3KCktPnNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJE
aXJ0eSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwCmluZGV4IGNjZTI1YTc0N2YyNThiNDMyODVhYjgyOTk4NTM0YTI3NjMwNGFkZjEuLmRlOThm
Zjg5MTg4NDU0NDE4NmE2ODc2NDU1ZDkzNzMyZmVkMDE1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgUmVuZGVyQm94UmVn
aW9uSW5mbyogUmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKGNvbnN0IFJlbmRl
ckJveCogYm94LAogICAgIGlmICghbV9pc1ZhbGlkIHx8ICFtX2Zsb3dUaHJlYWQpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0g
bV9yZW5kZXJCb3hSZWdpb25JbmZvLmFkZChib3gsIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdp
b25JbmZvLmFkZChib3gsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKGJveElu
Zm8pCiAgICAgICAgICpib3hJbmZvID0gUmVuZGVyQm94UmVnaW9uSW5mbyhsb2dpY2FsTGVmdElu
c2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCA5MDdmZTE2NzdiMTcwNDgyYzZmNGFjNTdl
ZDk3MWQ1NzIxOTFhZTQxLi5mOGY0OTNkYjg1YTBkZGI3YTY5YzFmMTZjYjE3NWY3MGFkOWRjYjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJl
bmRlclN0eWxlKgogICAgIGlmIChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdy
YWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3QtPnNl
Y29uZDsKKyAgICBPd25QdHI8R3JhZGllbnREYXRhPiYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVu
dE1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3Jh
ZGllbnREYXRhKQogICAgICAgICBncmFkaWVudERhdGEgPSBhZG9wdFB0cihuZXcgR3JhZGllbnRE
YXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGJlYzBmMzM3NGY0NjQzNjJhOWE1ODNlYWYx
OTgzNTAyODFiOGQwMmMuLjRkYzUwMWI4MDZiM2Q4ZGYyNTQ3NDU0M2JjZmNmZjM4NzYwZDYyNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0
eWxlKgogICAgIGlmIChtX2F0dHJpYnV0ZXMucGF0dGVyblVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVz
OjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPFBhdHRlcm5EYXRh
PiYgcGF0dGVybkRhdGEgPSBtX3BhdHRlcm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuZmlyc3Qt
PnNlY29uZDsKKyAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0dGVy
bk1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcGF0
dGVybkRhdGEpCiAgICAgICAgIHBhdHRlcm5EYXRhID0gYWRvcHRQdHIobmV3IFBhdHRlcm5EYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKaW5kZXggNDhkYjY5ODAzMjIy
YTRjYjM5YWQxYTg1MDBmYTZjNjM4NDgyMDY4OS4uOGU0MmQyZjE3NmRkM2IxMTEyYTAxYTUxZDhk
YjYyZjRiMzhiYmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCkBAIC0x
MzEsOSArMTMxLDkgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpzZXRJdGVt
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHUKICAgICB9CiAgICAgbV9jdXJy
ZW50TGVuZ3RoID0gbmV3TGVuZ3RoOwogCi0gICAgcGFpcjxIYXNoTWFwPFN0cmluZywgU3RyaW5n
Pjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZhbHVlKTsKLSAg
ICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25k
ID0gdmFsdWU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFkZFJlc3VsdCBhZGRSZXN1
bHQgPSBtX21hcC5hZGQoa2V5LCB2YWx1ZSk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRy
eSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSB2YWx1ZTsKIAogICAgIGlu
dmFsaWRhdGVJdGVyYXRvcigpOwogCkBAIC0xNzEsOCArMTcxLDggQEAgdm9pZCBTdG9yYWdlTWFw
OjppbXBvcnRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIC8vIEJlIHN1cmUgdG8gY29weSB0aGUga2V5cy92YWx1ZXMgYXMgaXRlbXMgaW1wb3J0ZWQg
b24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhcmUgZGVzdGluZWQKICAgICAvLyB0byBjcm9zcyBhIHRo
cmVhZCBib3VuZGFyeQotICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9y
LCBib29sPiByZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29s
YXRlZENvcHkoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOyAg
Ly8gVHJ1ZSBpZiB0aGUga2V5IGRpZG4ndCBleGlzdCBwcmV2aW91c2x5LgorICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleS5pc29sYXRl
ZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7IC8vIFRydWUgaWYgdGhlIGtleSBkaWRuJ3QgZXhpc3QgcHJl
dmlvdXNseS4KIAogICAgIEFTU0VSVChtX2N1cnJlbnRMZW5ndGggKyBrZXkubGVuZ3RoKCkgPj0g
bV9jdXJyZW50TGVuZ3RoKTsKICAgICBtX2N1cnJlbnRMZW5ndGggKz0ga2V5Lmxlbmd0aCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCA4MTBi
OTY2NWMxZmE4MjBlMDE5NTRmNzFmMTdhZWM3N2U1NWRkMjVmLi4zZjU5NzA1YjE3MTU0MzdiYmI3
NzVlODljM2I0OTI0MDMwYjY4M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcApAQCAtMjEzLDkgKzIxMyw5IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU1ZHU3R5
bGVkCiAKICAgICAvLyBUaGUgSGFzaE1hcCBhZGQgZnVuY3Rpb24gbGVhdmVzIHRoZSBtYXAgYWxv
bmUgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGluIHRoZQogICAgIC8vIG1h
cCBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4aXN0cy4gU28gd2UgYWRkIHdpdGggYSB2YWx1ZSBv
ZiAwLCBhbmQgaXQgZWl0aGVyIGZpbmRzIHRoZQotICAgIC8vIGV4aXN0aW5nIGVsZW1lbnQgb3Ig
YWRkcyBhIG5ldyBvbmUgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBUaGUgIi5maXJzdC0+c2Vjb25k
IiBpZGlvbSBnZXRzCisgICAgLy8gZXhpc3RpbmcgZWxlbWVudCBvciBhZGRzIGEgbmV3IG9uZSBp
biBhIHNpbmdsZSBvcGVyYXRpb24uIFRoZSAiLml0ZXJhdG9yLT5zZWNvbmQiIGlkaW9tIGdldHMK
ICAgICAvLyB1cyB0byB0aGUgaXRlcmF0b3IgZnJvbSBhZGQncyByZXN1bHQsIGFuZCB0aGVuIHRv
IHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGhhc2ggdGFibGUuCi0gICAgU1ZHUGVuZGluZ0VsZW1lbnRz
KiYgc2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgMCkuZmlyc3QtPnNlY29uZDsKKyAg
ICBTVkdQZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCAw
KS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc2V0KQogICAgICAgICBzZXQgPSBuZXcgU1ZH
UGVuZGluZ0VsZW1lbnRzOwogICAgIHNldC0+YWRkKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNzEyMjAwY2U2OTNjOWQ1ZGFiMTgwYTA3MTVmZWI3YTFm
OWY2MzUzMy4uYTcxYzQ0NTU1Mzg3ZjVmZjg2ODQ0MzUyOTg3NDI0NDQyYzY4ODUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC04OTksOSArODk5LDkgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmEKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRl
ckludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3Jl
cXVlc3RIZWFkZXJzLmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CisgICAgSFRUUEhl
YWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUsIHZh
bHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWU7CiB9CiAKIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6
Z2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCAxNTRiNjdlOTJkMzJjN2QxNzZiY2I4MTA5
MGU4ZGY0MTk4YjRiMDBhLi43MDdjYzdmY2UyYzczNjE4ZTgyOTg2ZGQ2Yjk2YzVmZWY3Mzk4ZWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTM1MCw3ICszNTAsNyBA
QCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUoKSBjb25zdAogICAgICAgICAvLyBJZiB0aGVyZSBhcmUg
c2V2ZXJhbCBub2RlcyB3aXRoIHRoZSBzYW1lIGlkLCBpZCgpIHNob3VsZCByZXR1cm4gdGhlIGZp
cnN0IG9uZS4KICAgICAgICAgLy8gSW4gV2ViS2l0LCBnZXRFbGVtZW50QnlJZCBiZWhhdmVzIHNv
LCB0b28sIGFsdGhvdWdoIGl0cyBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgZm9ybWFsbHkgdW5k
ZWZpbmVkLgogICAgICAgICBOb2RlKiBub2RlID0gY29udGV4dFNjb3BlLT5nZXRFbGVtZW50QnlJ
ZChTdHJpbmcoaWRMaXN0LmNoYXJhY3RlcnMoKSArIHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBv
cykpOwotICAgICAgICBpZiAobm9kZSAmJiByZXN1bHRTZXQuYWRkKG5vZGUpLnNlY29uZCkKKyAg
ICAgICAgaWYgKG5vZGUgJiYgcmVzdWx0U2V0LmFkZChub2RlKS5pc05ld0VudHJ5KQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKICAgICAgICAgCiAgICAgICAgIHN0YXJ0UG9zID0g
ZW5kUG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAppbmRleCBkOWQxZmQ0N2Q2NjRmMGM5YmRm
MTQ2YWMyMWRkOTNhZGZhYjRhMjA0Li5iYTFkZWQzOWUxODRhMDNlNWUxODM1NTNkODBlZDZjYWRm
ZWNmYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZv
aWQgTG9jYXRpb25QYXRoOjpldmFsdWF0ZShOb2RlU2V0JiBub2RlcykgY29uc3QKIAogICAgICAg
ICAgICAgZm9yIChzaXplX3Qgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgbWF0Y2hlcy5zaXpl
KCk7ICsrbm9kZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1hdGNoZXNb
bm9kZUluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAoIW5lZWRUb0NoZWNrRm9yRHVwbGljYXRl
Tm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUpLnNlY29uZCkKKyAgICAgICAgICAgICAgICBp
ZiAoIW5lZWRUb0NoZWNrRm9yRHVwbGljYXRlTm9kZXMgfHwgbmV3Tm9kZXNTZXQuYWRkKG5vZGUp
LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIG5ld05vZGVzLmFwcGVuZChub2RlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5j
cHAKaW5kZXggNThjZDg3OThlYjM2M2FlYmI2YjQ4YzMzOTU2NzAwZmYxMDc1YTU3Ny4uMzY4MDBh
MTE3NDE2ZDA3MjZhMmFiMjIyODk5N2EwYmZiMWM4OTA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQcmVkaWNhdGUuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgVmFsdWUgVW5pb246OmV2YWx1YXRl
KCkgY29uc3QKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJoc05vZGVzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByaHNOb2Rlc1tpXTsKLSAgICAgICAgaWYg
KG5vZGVzLmFkZChub2RlKS5zZWNvbmQpCisgICAgICAgIGlmIChub2Rlcy5hZGQobm9kZSkuaXNO
ZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdFNldC5hcHBlbmQobm9kZSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCBl
M2RjZThjNWFjNGQ2ZjZjZTQ3Njk4ZTJmM2E3MTI1MjYxMjJjNzU5Li4zYzBjZjE1ZDVjOWM3M2Fj
NjU3OGM5YmE3NzZjZTliZTkzNGFlZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFdlYkhUVFBM
b2FkSW5mbzo6c2V0RW5jb2RlZERhdGFMZW5ndGgobG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
KQogCiBzdGF0aWMgdm9pZCBhZGRIZWFkZXIoSFRUUEhlYWRlck1hcCogbWFwLCBjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcGFpcjxIVFRQSGVh
ZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUpOwot
ICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0g
IiwgIiArIFN0cmluZyh2YWx1ZSk7CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1hcC0+YWRkKG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZhbHVlKTsK
IH0KIAogdm9pZCBXZWJIVFRQTG9hZEluZm86OmFkZFJlcXVlc3RIZWFkZXIoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGVjMjEyZTUxNzdjYzU4NjM4Y2UwMTcy
Yzc1ZjEwOGQzZjM3NTJkM2IuLjA3ZDVhNDVmODhjZTljOGEzNDM3NDkzM2MyYjQzNzY5ZTRhMDA3
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25zZS5jcHAK
QEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYKICAgICAvLyBGSVhN
RTogQWRkIGFuIGFkZEhUVFBIZWFkZXJGaWVsZCBtZXRob2QgdG8gUmVzb3VyY2VSZXNwb25zZS4K
ICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBtYXAgPSBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNw
b25zZS0+aHR0cEhlYWRlckZpZWxkcygpOwogICAgIFN0cmluZyB2YWx1ZVN0cih2YWx1ZSk7Ci0g
ICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0KKyAgICBIVFRQ
SGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0KICAgICAgICAgY29uc3RfY2FzdDxIVFRQSGVh
ZGVyTWFwKj4oJm1hcCktPmFkZChuYW1lLCB2YWx1ZVN0cik7Ci0gICAgaWYgKCFyZXN1bHQuc2Vj
b25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgdmFsdWVTdHI7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQgKz0gIiwgIiArIHZhbHVlU3RyOwogfQogCiB2b2lkIFdlYlVSTFJlc3BvbnNlOjpjbGVhckhU
VFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
ci5tbQppbmRleCBjZTQwZjQ4MDI2MTE0YmE4MDYwZWFkODI1YjI4N2IzNDA2MDQ1NzE2Li5jNTEw
YTlhOTNkNWIxNzQzMTFlMmQ3MzMwZjIxYjU5NGJhMDU3MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1h
bmFnZXIubW0KQEAgLTY5LDE1ICs2OSwxNSBAQCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjp+
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcigpCiAKIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBO
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpob3N0Rm9yUGx1Z2luKGNvbnN0IFdURjo6U3RyaW5n
JiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBsdWdpbkFyY2hpdGVjdHVyZSwgY29uc3QgU3RyaW5n
JiBidW5kbGVJZGVudGlmaWVyKQogewotICAgIHBhaXI8UGx1Z2luSG9zdE1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fcGx1Z2luSG9zdHMuYWRkKHBsdWdpblBhdGgsIDApOworICAgIFBs
dWdpbkhvc3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BsdWdpbkhvc3RzLmFkZChwbHVnaW5Q
YXRoLCAwKTsKICAgICAKICAgICAvLyBUaGUgcGFja2FnZSB3YXMgYWxyZWFkeSBpbiB0aGUgbWFw
LCBqdXN0IHJldHVybiBpdC4KLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVy
biByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIAogICAgIG1hY2hf
cG9ydF90IGNsaWVudFBvcnQ7CiAgICAgaWYgKG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tf
c2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmNsaWVudFBvcnQpICE9IEtFUk5fU1VD
Q0VTUykgewotICAgICAgICBtX3BsdWdpbkhvc3RzLnJlbW92ZShyZXN1bHQuZmlyc3QpOworICAg
ICAgICBtX3BsdWdpbkhvc3RzLnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgCkBAIC04NSw3ICs4NSw3IEBAIE5ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5KiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpob3N0Rm9yUGx1Z2luKGNvbnN0IFdURjo6
U3RyCiAgICAgUHJvY2Vzc1NlcmlhbE51bWJlciBwbHVnaW5Ib3N0UFNOOwogICAgIGlmICghc3Bh
d25QbHVnaW5Ib3N0KHBsdWdpblBhdGgsIHBsdWdpbkFyY2hpdGVjdHVyZSwgY2xpZW50UG9ydCwg
cGx1Z2luSG9zdFBvcnQsIHBsdWdpbkhvc3RQU04pKSB7CiAgICAgICAgIG1hY2hfcG9ydF9kZXN0
cm95KG1hY2hfdGFza19zZWxmKCksIGNsaWVudFBvcnQpOwotICAgICAgICBtX3BsdWdpbkhvc3Rz
LnJlbW92ZShyZXN1bHQuZmlyc3QpOworICAgICAgICBtX3BsdWdpbkhvc3RzLnJlbW92ZShyZXN1
bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCkBAIC05NSw3ICs5
NSw3IEBAIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
Ojpob3N0Rm9yUGx1Z2luKGNvbnN0IFdURjo6U3RyCiAgICAgCiAgICAgTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkqIGhvc3RQcm94eSA9IG5ldyBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eShjbGllbnRQ
b3J0LCBwbHVnaW5Ib3N0UG9ydCwgcGx1Z2luSG9zdFBTTiwgc2hvdWxkQ2FjaGVNaXNzaW5nUHJv
cGVydGllc0FuZE1ldGhvZHMpOwogICAgIAotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gaG9z
dFByb3h5OworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gaG9zdFByb3h5OwogICAgIAog
ICAgIHJldHVybiBob3N0UHJveHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCBhMzk2NjljYTUwM2QzY2Q3Y2M4Nzg4MDJl
Y2JjM2JmYThhMjgxYTU5Li4wOTQ0M2RjMTYyOGE2NjhmMmZiMjE0ZjNiNTMxN2M2YjU0NDQ0MWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KQEAgLTM3NiwxMyArMzc2LDEzIEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0
aG9kc05hbWVkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBN
ZXRob2RMaXN0KCk7CiAKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3Mg
YW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgotICAgIHBh
aXI8TWV0aG9kTWFwOjppdGVyYXRvciwgYm9vbD4gbWFwQWRkUmVzdWx0ID0gbV9tZXRob2RzLmFk
ZChpZGVudGlmaWVyLmltcGwoKSwgMCk7Ci0gICAgaWYgKG1hcEFkZFJlc3VsdC5zZWNvbmQgJiYg
cmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5l
dyBQcm94eU1ldGhvZChtZXRob2ROYW1lKTsKKyAgICBNZXRob2RNYXA6OkFkZFJlc3VsdCBtYXBB
ZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKTsKKyAgICBpZiAo
bWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQorICAgICAgICBtYXBB
ZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5ldyBQcm94eU1ldGhvZChtZXRob2ROYW1lKTsK
IAogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKLSAgICBpZiAobWFwQWRkUmVzdWx0LmZpcnN0
LT5zZWNvbmQpCi0gICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKG1hcEFkZFJlc3VsdC5maXJzdC0+
c2Vjb25kKTsKKyAgICBpZiAobWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpCisgICAgICAg
IG1ldGhvZExpc3QuYXBwZW5kKG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICBy
ZXR1cm4gbWV0aG9kTGlzdDsKIH0KIApAQCAtNDEyLDEwICs0MTIsMTAgQEAgRmllbGQqIFByb3h5
SW5zdGFuY2U6OmZpZWxkTmFtZWQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5s
ZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KLSAg
ICBwYWlyPEZpZWxkTWFwOjppdGVyYXRvciwgYm9vbD4gbWFwQWRkUmVzdWx0ID0gbV9maWVsZHMu
YWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKTsKLSAgICBpZiAobWFwQWRkUmVzdWx0LnNlY29uZCAm
JiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0g
bmV3IFByb3h5RmllbGQocHJvcGVydHlOYW1lKTsKLSAgICByZXR1cm4gbWFwQWRkUmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgRmllbGRNYXA6OkFkZFJlc3VsdCBtYXBBZGRSZXN1bHQgPSBtX2Zp
ZWxkcy5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApOworICAgIGlmIChtYXBBZGRSZXN1bHQuaXNO
ZXdFbnRyeSAmJiByZXBseS0+bV9yZXN1bHQpCisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kID0gbmV3IFByb3h5RmllbGQocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gbWFw
QWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIEpTQzo6SlNWYWx1ZSBQcm94eUluc3Rh
bmNlOjpmaWVsZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmllbGQqIGZpZWxkKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKaW5kZXggYzQ0NTBmNzQ5ZWUxZmE5NjQ1YTYx
MzBlYzhiYzNiZWY5NTQ0YTE0YS4uOWM5Y2MwMjZiNDdiNGZlYTk2MGM2Mzk4NDZlMGViYTUxYzQ2
NTNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCkBAIC01MSwxMCArNTEsOSBAQCBz
dGF0aWMgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+IGNsYXNzRmFjdG9yeShjb25zdCBDTFNJRCYgY2xz
aWQpCiAgICAgdHlwZWRlZiBIYXNoTWFwPENMU0lELCBDT01QdHI8SUNsYXNzRmFjdG9yeT4sIENM
U0lESGFzaCwgQ0xTSURIYXNoVHJhaXRzPiBGYWN0b3J5TWFwOwogICAgIHN0YXRpYyBGYWN0b3J5
TWFwJiBmYWN0b3JpZXMgPSAqbmV3IEZhY3RvcnlNYXA7CiAKLSAgICBwYWlyPEZhY3RvcnlNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAwKTsKLSAgICBD
T01QdHI8SUNsYXNzRmFjdG9yeT4mIGZhY3RvcnkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKLSAg
ICBib29sIGFkZGVkID0gcmVzdWx0LnNlY29uZDsKLSAgICBpZiAoYWRkZWQgJiYgRkFJTEVEKERs
bEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihmYWN0b3J5KSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZmYWN0b3J5KSkpKQorICAgIEZhY3RvcnlNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAwKTsKKyAgICBDT01QdHI8SUNsYXNzRmFjdG9yeT4mIGZh
Y3RvcnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkgJiYgRkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihmYWN0b3J5KSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQogICAgICAgICBmYWN0b3J5ID0g
MDsKIAogICAgIHJldHVybiBmYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGEyZmZhMGYyNTBiZTg5MDYxMjQwNzFjZDQ4
MjlkNzg4YjdiOGFmMzguLjA3MGY0NTgzMDc5ZjdiNGVlYmZjZjRhMmE4ODg0Nzg2ZDhjNTU0MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJz
LmgKQEAgLTE2MSw3ICsxNjEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1l
IE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoa2V5LCB2YWx1ZSkuc2Vj
b25kKSB7CisgICAgICAgICAgICBpZiAoIXRlbXBIYXNoTWFwLmFkZChrZXksIHZhbHVlKS5pc05l
d0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFwIGFscmVhZHkgaGFzIHRo
ZSBzcGVjaWZpZWQga2V5LCBiYWlsLgogICAgICAgICAgICAgICAgIGRlY29kZXItPm1hcmtJbnZh
bGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggM2MyZjE0Y2VkMDNlOGYwOWJm
MDUzOTY4ODliMTg0ZWY4Yjg1YzU5ZS4uZjdjMzcyM2Y3ZWY3ZGQyMjkxZWE1OTE1MDYwMDkzZGMx
YzQxOGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rp
b24uY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBwcml2YXRlOgogUGFzc1JlZlB0cjxDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpnZXRP
ckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihzeW5j
TWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAgcGFpcjxTeW5jTWVzc2FnZVN0YXRlTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29w
LCAwKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3luY01l
c3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCAwKTsKIAotICAgIGlmICghcmVzdWx0LnNlY29u
ZCkgewotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXR1
cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewor
ICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXR1cm4g
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgUmVmUHRyPFN5bmNNZXNzYWdl
U3RhdGU+IHN5bmNNZXNzYWdlU3RhdGUgPSBhZG9wdFJlZihuZXcgU3luY01lc3NhZ2VTdGF0ZShy
dW5Mb29wKSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBzeW5jTWVzc2FnZVN0YXRlLmdl
dCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gc3luY01lc3NhZ2VTdGF0ZS5nZXQo
KTsKIAogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwCmluZGV4IDJmOTA1ZWM2YTEyNDg3
MGQ4OTdiYTM3MDA0YmU4Y2FkMmZiMmMxNzQuLmFjNjliNzZhM2IyNGFmN2VjMTZhZTk3NzM3OWM1
MWE2ZTNkZTNkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGlj
dGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVEaWN0aW9uYXJ5
LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIE11dGFibGVEaWN0aW9uYXJ5Ojp+TXV0YWJsZURpY3Rp
b25hcnkoKQogCiBib29sIE11dGFibGVEaWN0aW9uYXJ5OjphZGQoY29uc3QgU3RyaW5nJiBrZXks
IEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8TWFwVHlwZTo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOwotICAgIHJldHVybiByZXN1bHQuc2Vj
b25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVt
KTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKIGJvb2wgTXV0YWJsZURpY3Rp
b25hcnk6OnNldChjb25zdCBTdHJpbmcmIGtleSwgQVBJT2JqZWN0KiBpdGVtKQogewotICAgIHN0
ZDo6cGFpcjxNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAuc2V0KGtleSwg
aXRlbSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5zZWNvbmQ7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOworICAgIHJldHVybiByZXN1bHQuaXNOZXdF
bnRyeTsKIH0KIAogdm9pZCBNdXRhYmxlRGljdGlvbmFyeTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYg
a2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAppbmRleCA5Njcy
ZjI4ZGYzN2FhYjkxMWZkYzI4MWJlMmM2ODIwMDA1YzJhYmYxLi5hY2U3MmZkMmUzM2UzYmMxMTdm
YzJmYTQ1NWYxNWQ4Nzc3ZmMwMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VXNlck1lc3NhZ2VDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3Nh
Z2VDb2RlcnMuaApAQCAtMjg1LDggKzI4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShtZXNzYWdlQ29kZXIpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8SW1tdXRhYmxlRGljdGlv
bmFyeTo6TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC5zZXQoa2V5LCBlbGVt
ZW50LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQorICAg
ICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OkFkZFJlc3VsdCByZXN1
bHQgPSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ByaW50aW5nVmlldy5tbQppbmRleCAxM2FlZmI4MmJkMTJkOTY1ZmE1MDc0MTY2YTdkZDUx
MzljZTVlMmJlLi4zMTI1OGYyMDFiOTgyNjg0MDM5MDQ4YjQwOGM2YjM3MDQ1NzBhODU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5t
bQpAQCAtMjI4LDggKzIyOCw4IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9QREYoV0tEYXRh
UmVmIGRhdGFSZWYsIFdLRXJyb3JSZWYsIHZvaWQqIHVudHlwZWRDb250ZXh0CiAgICAgICAgICAg
ICBBU1NFUlQoW3ZpZXcgX2lzUHJpbnRpbmdQcmV2aWV3XSk7CiAKICAgICAgICAgICAgIGlmIChk
YXRhKSB7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFZl
Y3Rvcjx1aW50OF90PiA+OjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSB2aWV3LT5fcGFnZVByZXZp
ZXdzLmFkZChpdGVyLT5zZWNvbmQsIFZlY3Rvcjx1aW50OF90PigpKTsKLSAgICAgICAgICAgICAg
ICBlbnRyeS5maXJzdC0+c2Vjb25kLmFwcGVuZChkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6SW50UmVjdCwgVmVjdG9yPHVpbnQ4
X3Q+ID46OkFkZFJlc3VsdCBlbnRyeSA9IHZpZXctPl9wYWdlUHJldmlld3MuYWRkKGl0ZXItPnNl
Y29uZCwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9y
LT5zZWNvbmQuYXBwZW5kKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB2aWV3LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLnJlbW92ZShj
b250ZXh0LT5jYWxsYmFja0lEKTsKICAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXNwb25zZVRv
TGF0ZXN0UmVxdWVzdCA9IHZpZXctPl9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9PSBj
b250ZXh0LT5jYWxsYmFja0lEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCmluZGV4IDdmOTU3OWE2MmE3NzkwODNmMmFmYTM2YjNhMjYzZDFiZDgxMzM5NWMuLjYx
ZTNiNjA3NWQ0MDgyNWNhM2VhNzYzYzgwMGNhNmViMWMyMTg1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTcyMSw5ICs3MjEsOSBAQCBzdGF0aWMg
dm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhXS1N0cmluZ1JlZiBjb21tYW5kTmFtZSwgYm9v
bCBpc0VuYWJsZWQsIGludAogICAgICAgICByZXR1cm4gWUVTOwogCiAgICAgLy8gQWRkIHRoaXMg
aXRlbSB0byB0aGUgdmVjdG9yIG9mIGl0ZW1zIGZvciBhIGdpdmVuIGNvbW1hbmQgdGhhdCBhcmUg
YXdhaXRpbmcgdmFsaWRhdGlvbi4KLSAgICBwYWlyPFZhbGlkYXRpb25NYXA6Oml0ZXJhdG9yLCBi
b29sPiBhZGRSZXN1bHQgPSBfZGF0YS0+X3ZhbGlkYXRpb25NYXAuYWRkKGNvbW1hbmROYW1lLCBW
YWxpZGF0aW9uVmVjdG9yKCkpOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmFwcGVuZChp
dGVtKTsKLSAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkgeworICAgIFZhbGlkYXRpb25NYXA6OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSBfZGF0YS0+X3ZhbGlkYXRpb25NYXAuYWRkKGNvbW1hbmROYW1l
LCBWYWxpZGF0aW9uVmVjdG9yKCkpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmFw
cGVuZChpdGVtKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8g
SWYgd2UgYXJlIG5vdCBhbHJlYWR5IGF3YWl0aW5nIHZhbGlkYXRpb24gZm9yIHRoaXMgY29tbWFu
ZCwgc3RhcnQgdGhlIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIHByb2Nlc3MuCiAgICAgICAgIC8v
IEZJWE1FOiBUaGVvcmV0aWNhbGx5LCB0aGVyZSBpcyBhIHJhY2UgaGVyZTsgd2hlbiB3ZSBnZXQg
dGhlIGFuc3dlciBpdCBtaWdodCBiZSBvbGQsIGZyb20gYSBwcmV2aW91cyB0aW1lCiAgICAgICAg
IC8vIHdlIGFza2VkIGZvciB0aGUgc2FtZSBjb21tYW5kOyB0aGVyZSBpcyBubyBndWFyYW50ZWUg
dGhlIGFuc3dlciBpcyBzdGlsbCB2YWxpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOWNlNTQ0MDdlNTY5ZDUwMzBmODFkYWJhMWVmZGNiOTli
ZmIwYTBmOS4uZThkZmQ4MTY4YzdhMjcxMjY0YWNmNWM3MWRkOTAyYzBhNzQ1NWI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTI3MSwxOCAr
MjcxLDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0odWludDY0
X3QgaXRlbUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwo
b3JpZ2luYWxVUkwpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBzdGQ6OnBh
aXI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1f
YmFja0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKLSAgICBpZiAocmVzdWx0LnNl
Y29uZCkgewotICAgICAgICAvLyBOZXcgaXRlbS4KLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNv
bmQgPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIHVybCwgdGl0
bGUsIGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCksIGl0ZW1J
RCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
YmFja0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKKyAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJhY2tGb3J3YXJk
RGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZC0+c2V0T3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpOwotICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kLT5zZXRVUkwodXJsKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0
VGl0bGUodGl0bGUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRCYWNrRm9yd2FyZERh
dGEoYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldE9yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKTsKKyAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+c2V0VVJMKHVybCk7CisgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQtPnNldFRpdGxlKHRpdGxlKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC0+c2V0QmFja0ZvcndhcmREYXRhKGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJk
RGF0YS5zaXplKCkpOwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggY2ViYmIzMGMxYWYz
YjRkOWMxZDIzOWIwOGZiZjRlNWFlNzZlZjQ2ZS4uN2Q3MzA1ZWRiYzMwY2RlMDkxZmFmY2YzZWM5
YzMyMGU1OGM2ZTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwCkBAIC02NywxMiArNjcsMTIgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoTm9kZSoKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc3RkOjpwYWlyPERPTUhhbmRs
ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQobm9k
ZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBE
T01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKG5v
ZGUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQp
OwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Y3JlYXRlKG5vZGUpOwotICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gbm9kZUhhbmRsZS5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IG5vZGVIYW5kbGUuZ2V0KCk7CiAgICAgcmV0dXJuIG5vZGVIYW5kbGUucmVsZWFzZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4
IGU5NGVkZmQzNGI4Yjg5ZDM2ZTlkM2U3ZmRiMGM0N2EwMDUyNWUxMTkuLjFiNzRmMDEyNDAwOGRi
M2MwNzgyOGVhNmY2ZDJjMDVhYzA1OWMzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShSYW4KICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0
ZDo6cGFpcjxET01IYW5kbGVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRs
ZUNhY2hlKCkuYWRkKHJhbmdlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKKyAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhh
bmRsZUNhY2hlKCkuYWRkKHJhbmdlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUocmFu
Z2UpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0KCk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSByYW5nZUhhbmRsZS5nZXQoKTsKICAgICByZXR1cm4g
cmFuZ2VIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKaW5kZXggMjdlNGM3MmVhMWY3NGQ1ZTExNTU0NTRiOGEzNWM5Y2FlMzY5YThlYy4uMjZl
NTQwNzQ0YmQ1Mjc0YzliNmRhY2VlYTViZjk0ZmEzYWUwNDk3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFn
ZSkKICAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25J
RCk7CiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNh
dGlvbik7CiAgICAgCi0gICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLmZpcnN0OworICAgIE5vdGlmaWNhdGlvbkNv
bnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3Rp
ZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2NF90PigpKS5p
dGVyYXRvcjsKICAgICBpdC0+c2Vjb25kLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAgICAgCiAg
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Ym9k
eSgpLCBub3RpZmljYXRpb24tPmljb25VUkwoKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT5yZXBs
YWNlSWQoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzFiYTA1MGNmNmRh
MWQ3YWExNjE3NjE0MzdmNGM0OGQ1YWRlMjFkMS4uMmRmY2RlMDgzYjljMTRiMWM0MTEyNjNiNjYy
MzAzODlmZTFiZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC01MTgsMTYgKzUxOCwxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogewogICAgIC8v
IEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBk
dXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQ
YWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJv
dWdoIHRoZSBub3JtYWwgd2F5LiAKLSAgICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYlBhZ2U+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBh
Z2VJRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1
bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gV2ViUGFn
ZTo6Y3JlYXRlKHBhZ2VJRCwgcGFyYW1ldGVycyk7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYlBhZ2U+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwg
MCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VSVCghcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IFdl
YlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOwogCiAgICAgICAgIC8vIEJhbGFuY2Vk
IGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJlbW92ZVdlYlBhZ2UuCiAgICAgICAgIGRpc2Fi
bGVUZXJtaW5hdGlvbigpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmlyc3QtPnNlY29u
ZCk7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKQEAgLTczOSwxMyArNzM5LDEz
IEBAIFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAodWludDY0X3Qg
cGFnZUdyb3VwSUQpCiAKIFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3Jv
dXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkKIHsKLSAgICBzdGQ6OnBh
aXI8SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+OjppdGVyYXRv
ciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91cERhdGEucGFnZUdy
b3VwSUQsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVz
dWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdlYlBh
Z2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdl
R3JvdXBNYXAuYWRkKHBhZ2VHcm91cERhdGEucGFnZUdyb3VwSUQsIDApOworICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
KTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJQYWdlR3JvdXBQcm94eTo6
Y3JlYXRlKHBhZ2VHcm91cERhdGEpOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQuZmlyc3Qt
PnNlY29uZC5nZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7
CiB9CiAKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDA1OWRlY2E4OTZkZDg3NWQwYWI1YjMwZDdhYmU3MDgxODIzMDQ2NGYu
LjJkMDk4MzU5OTZkM2JmNzQ5MjFhZTlkMjUxY2Y4MTE2OTkxZDg0ODIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBt
b3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBw
YWlyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5J
c29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRl
U2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0
VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKwogMjAxMi0w
My0yOSAgVmluZWV0IENoYXVkaGFyeSAgPHJnZjc0OEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIGN1c3RvbSBiaW5kaW5ncyBmb3JtIEludGVybmFscy5pZGwgb2YgYXR0cmlidXRlIHR5
cGUgQXJyYXkuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KaW5kZXggOTBlNTQzMzQ2ZDk0ZmMxNmI2ZDE3M2JiZDQ2N2FhNzUyZTUw
Y2YxNi4uMTg5OTFjZWVjMGEwMDQ1ZjJlMjc5YTZlMTk5NWZjN2NiZmRjOGQ0ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpA
QCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlU2Ny
aXB0SW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2JqCiAgICAgaWYgKCF3b3Js
ZElEKQogICAgICAgICB3b3JsZCA9IFtXZWJTY3JpcHRXb3JsZCB3b3JsZF07CiAgICAgZWxzZSB7
Ci0gICAgICAgIFJldGFpblB0cjxXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFw
KCkuYWRkKHdvcmxkSUQsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIFJldGFpblB0cjxXZWJT
Y3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgICAgIGlmICghd29ybGRTbG90KQogICAgICAgICAgICAgd29ybGRT
bG90LmFkb3B0TlMoW1tXZWJTY3JpcHRXb3JsZCBhbGxvY10gaW5pdF0pOwogICAgICAgICB3b3Js
ZCA9IHdvcmxkU2xvdC5nZXQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDgwOTQxYjhlMDY3MmRhZjQwNTdlMWZl
MDdmYTAzNThlMGZhY2JhMWMuLjFiNmE0MTU3YzQ4ZTY2NjVkNTM5Y2FjOGFkNzg4MDkzMjNjNzIw
ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250
cm9sbGVyV2luLmNwcApAQCAtMTMwMiw3ICsxMzAyLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgSlNP
YmoKICAgICAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShfX3V1aWRvZihXZWJT
Y3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdvcmxkKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZ3b3JsZCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAgICAgICBD
T01QdHI8SVdlYlNjcmlwdFdvcmxkPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJ
RCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgQ09NUHRyPElXZWJTY3JpcHRXb3JsZD4mIHdv
cmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgIGlmICghd29ybGRTbG90ICYmIEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShfX3V1
aWRvZihXZWJTY3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdvcmxkU2xvdCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCoqPigmd29ybGRTbG90KSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB3b3JsZCA9IHdvcmxkU2xvdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMDU4
MzQ4Njg0OWQ1YzdlZjU1NGM2NzdhNmMyM2Y0ZmM5OGI4ZDFiOS4uY2VjNDM0NGRkMmNmMzQ1NmY3
YjUyZDc3Yjk3ZDMwYzdlZDI1MDBlYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAg
LTUwNCw3ICs1MDQsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZChKU0NvbnRleHRSZWYgY29udGV4dCwgdQogICAgIGlmICghd29ybGRJ
RCkKICAgICAgICAgd29ybGQuYWRvcHQoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkp
OwogICAgIGVsc2UgewotICAgICAgICBXS1JldGFpblB0cjxXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
PiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4mIHdvcmxkU2xvdCA9
IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIGlm
ICghd29ybGRTbG90KQogICAgICAgICAgICAgd29ybGRTbG90LmFkb3B0KFdLQnVuZGxlU2NyaXB0
V29ybGRDcmVhdGVXb3JsZCgpKTsKICAgICAgICAgd29ybGQgPSB3b3JsZFNsb3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134599</attachid>
            <date>2012-03-29 09:25:09 -0700</date>
            <delta_ts>2012-03-29 10:11:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120329132508.patch</filename>
            <type>text/plain</type>
            <size>190039</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDM2ZDUxMzVjOGExNjA2ZTRmNmM1NzEyNWJiM2Q4YWVkMmU1NjA2Li4wZjk1MDJiZTkzNmQ1MTJm
ZGZlZmFmZGFlNjNlNzg3M2VmNzM5NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yOCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBvYmplY3QgZXF1
YWxpdHkgc3BlY3VsYXRpb25zIHNob3VsZCBiZSBzaW1wbGlmaWVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ4MGFiODRkMDc5
NTZmMjUyZjkxYThkNDAwYmU4NDk5NGQ5YzkyYTUuLjFhZTgyNTljMjc5M2QwZTZiMzgzODFlYTU1
YjNkMDQ0NzgwM2QyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDMtMjkgIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBIYXNoVGFibGU8Pjo6YWRkKCkgYW5kIGRlcml2YXRlIGZ1bmN0aW9ucyByZXR1cm4gYW4gQWRk
UmVzdWx0IHN0cnVjdCBpbnN0ZWFkCisgICAgICAgIG9mIGEgcGFpci4gVGhpcyBzdHJ1Y3QgY29u
dGFpbnMgY29udGFpbnMgJ2l0ZXJhdG9yJyBhbmQgJ2lzTmV3RW50cnknIG1lbWJlcnMsIHRoYXQg
YXJlCisgICAgICAgIG1vcmUgcmVhZGFibGUgYXQgY2FsbHNpdGVzIHRoYW4gcHJldmlvdXMgJ2Zp
cnN0JyBhbmQgJ3NlY29uZCcuCisKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAg
ICAgICAgKEhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAq
IHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChIYXNoTWFwKToKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoSGFz
aFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURik6CisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ6Okhhc2hU
YWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChIYXNoVGFibGVBZGRSZXN1bHQpOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6YWRk
KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZFBhc3NpbmdIYXNo
Q29kZSk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChMaXN0SGFzaFNl
dCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUp
OgorICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6SWRlbnRpZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWRE
YXRhLmg6CisgICAgICAgIChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAg
ICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmYzM0NWIyNGQxMWM3ZTQ4
NDg0YmIyZjcxNjIyYzMxYTA0M2RmY2MuLjU3MWE5NWJlNTE0M2UwOTVjZDFkYjk4NzBiNDdlM2Jm
MDIwMDQ3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMTItMDMtMjkgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2
ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRl
c3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
T01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hU
YWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0
LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVu
dGlmaWVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAg
ICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFj
Y3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRR
dWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6
CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxl
Y3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNl
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91
cCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRM
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNh
Y2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdl
c0ZsdXNoZXI6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldERlcml2ZWRGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplQVRTVVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHlsZUNvbnRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbToKKyAgICAgICAgKFdlYkNvcmVSZXBv
cnRUaHJlYWRWaW9sYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjphZGQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAoSFRUUEhlYWRl
ck1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRh
dGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAgICAqIHBsdWdpbnMv
d2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkUGVyY2Vu
dEhlaWdodERlc2NlbmRhbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJl
YWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1h
cDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjppbXBvcnRJdGVtKToK
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHhtbC9YUGF0aFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0
aW9uUGF0aDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6VW5pb246OmV2YWx1YXRlKToKKwogMjAxMi0wMy0yOSAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IG9uIGEgc2luZ2xlIGNsaWNrIGluIFRpbWVsaW5lIG92ZXJ2aWV3LCBtYWtlIGEgbWlu
aW1hbCBzZWxlY3Rpb24gY2VudGVyZWQgYXJvdW5kIGN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBmYWEwNWFlYTkyYjM0NDRkM2JhZWFkMjEwMDM1NmM0ZWQwMmFiMjY3Li43NzE2
YzJjMzQ0OWI4NjdkMmQwMGZlZWVlNjM2NmE0ZWY0YzM3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xp
dmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFz
aE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRv
IHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBzcmMvV2ViSFRU
UExvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRkSGVhZGVyKToKKyAgICAgICAgKiBz
cmMvV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxSZXNwb25zZTo6
YWRkSFRUUEhlYWRlckZpZWxkKToKKwogMjAxMi0wMy0yOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEFkZGluZyBiZXR0
ZXIgY29tbWVudHMgZm9yIHRoZSBXZWJSVEMgbWV0aG9kcyBpbiBXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGIwZTFhYjk2MzA2ZGZlZjQ2NGQ3Y2MwNWMzOGJhODcy
YmVmOGJiODQuLjI3MzgxNDM4ODMzODI3YjU5ZGFiZWNkOGJlNjg4NGI4MmQxMzI5MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRl
IE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29k
ZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQgb2YgYSBwYWlyLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aG9zdEZvclBsdWdpbik6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0
YW5jZTo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KToKKwogMjAxMi0wMy0y
OCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBk
aXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UgY2FsbGJhY2ssIHNpbmNlIG5vCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggN2QwZGU4Y2NjZjQ0MmIwMTA2ZWFiMTI1YzgwMDM1YzM4YzU1MjExZC4uYmZiMGYx
NGQ0ODRiZjEwNjM5M2RiNjFhMTY4Zjg4N2MxNmFmOWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQg
c2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1
bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBXZWJLaXRDT01BUEkuY3BwOgorICAg
ICAgICAoY2xhc3NGYWN0b3J5KToKKwogMjAxMi0wMy0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3Vy
Y2UgY2FsbGJhY2ssIHNpbmNlIG5vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzI2ODIxZDA5NzQ1ZmI4MzkwN2Ji
MTU0MGI2ZDljOTY5MTQ2ODMwMS4uMGZlMDc5MWE0OWIyZWI0MDc2YTUwODkzZjNkMzg5Yzk4NTk2
MDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNl
bG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvTXV0YWJsZURpY3Rp
b25hcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpNdXRhYmxlRGljdGlvbmFyeTo6YWRkKToKKyAg
ICAgICAgKFdlYktpdDo6TXV0YWJsZURpY3Rpb25hcnk6OnNldCk6CisgICAgICAgICogU2hhcmVk
L1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRGVjb2Rl
cjo6YmFzZURlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1Zp
ZXcubW06CisgICAgICAgIChwYWdlRGlkRHJhd1RvUERGKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZh
Y2VJdGVtOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEJhY2tGb3J3YXJkSXRlbSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRP
ckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXApOgorCiAyMDEyLTAzLTI4ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgY3Jh
c2ggYW5kIGFuIGFzc2VydGlvbiB3aGVuIHJlY292ZXJpbmcgZnJvbSBhIHdlYiBwcm9jZXNzIGNy
YXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4
IDYxM2U1MzhiYzc1ZGIzNjlmN2RmZjdiNjc5ODkyY2I3MDJiMzIxMzYuLjlhY2EwYzdlMThjYTVj
Y2NjZWU3MzU5ZWEzOTFjMjgzNGIwYTFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBKU0NhbGxiYWNr
T2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7Ci0gICAgICAgICAgICBtX3Byb3BlcnR5
TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuYWRkKHBy
b3BlcnR5TmFtZS5pbXBsKCksIGVtcHR5KS5pdGVyYXRvci0+c2Vjb25kLnNldChnbG9iYWxEYXRh
LCBvd25lciwgdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlbGV0
ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRleCA1YzI0OWFiYWY2NWViYmE4OTJm
OWY1MzAzMzRjNWRiYzBkOTViOTlkLi4xMzUzNGQwNzhjNmI5Yjg3ODFmMDk5NmE2YmI5ODhiMzdm
NGRiZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTE2
NCw3ICsxNjQsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQwogCiBPcGFxdWVKU0NsYXNzQ29u
dGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICBPd25QdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIpLmZpcnN0
LT5zZWNvbmQ7CisgICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHRE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFkZCh0aGlzLCBudWxs
cHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghY29udGV4dERhdGEpCiAgICAgICAgIGNv
bnRleHREYXRhID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMpKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCA0YTZmNDY1M2VhYjg5MmZjNmRhMGRiOTNjYjQ5Y2IxNTcxYTZhZGZiLi4wZjA4
NTc5NTMzNjQwNGM1YTA0ZmExZTdiY2RjMTZhMDI3ZTFmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMjAwLDEwICsyMDAsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQsIFJlZ2lzdGUKIHsKICAgICBpbnQg
aW5kZXggPSBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCk7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBu
ZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7Ci0gICAgcGFpcjxTeW1i
b2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50
LmltcGwoKSwgbmV3RW50cnkpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0g
c3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAKLSAgICBpZiAoIXJl
c3VsdC5zZWNvbmQpIHsKLSAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0LmZpcnN0LT5z
ZWNvbmQuZ2V0SW5kZXgoKSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAg
ICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjE1LDkgKzIxNSw5IEBAIGludCBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBi
b29sIGlzQ29uc3RhbnQpCiB7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7
CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRP
bmx5IDogMCk7Ci0gICAgcGFpcjxTeW1ib2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRl
eCgpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5h
ZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOwogICAg
IHJldHVybiBpbmRleDsKIH0KIApAQCAtOTY4LDI0ICs5NjgsMjQgQEAgUGFzc1JlZlB0cjxMYWJl
bD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVy
SUQqIGNvbmQKIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5pbXBsKCk7
Ci0gICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pZGVu
dGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwot
ICAgIGlmIChyZXN1bHQuc2Vjb25kKSAvLyBuZXcgZW50cnkKKyAgICBJZGVudGlmaWVyTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5u
dW1iZXJPZklkZW50aWZpZXJzKCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIHJl
cCkpOwogCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZENvbnN0YW50VmFsdWUoSlNWYWx1ZSB2KQogewogICAgIGludCBpbmRleCA9IG1fbmV4dENv
bnN0YW50T2Zmc2V0OwogCi0gICAgcGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodiksIG1fbmV4dENvbnN0YW50
T2Zmc2V0KTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIEpTVmFsdWVNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2KSwgbV9uZXh0
Q29uc3RhbnRPZmZzZXQpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBt
X2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
KyBtX25leHRDb25zdGFudE9mZnNldCk7CiAgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7
CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVlKHYpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgaW5kZXgg
PSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xS
ZWdpc3RlcnNbaW5kZXhdOwogfQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikK
ICAgICAvLyB3b3JrIGNvcnJlY3RseSB3aXRoIE5hTiBhcyBhIGtleS4KICAgICBpZiAoaXNuYW4o
bnVtYmVyKSB8fCBudW1iZXIgPT0gSGFzaFRyYWl0czxkb3VibGU+OjplbXB0eVZhbHVlKCkgfHwg
SGFzaFRyYWl0czxkb3VibGU+Ojppc0RlbGV0ZWRWYWx1ZShudW1iZXIpKQogICAgICAgICByZXR1
cm4gZW1pdExvYWQoZHN0LCBqc051bWJlcihudW1iZXIpKTsKLSAgICBKU1ZhbHVlJiB2YWx1ZUlu
TWFwID0gbV9udW1iZXJNYXAuYWRkKG51bWJlciwgSlNWYWx1ZSgpKS5maXJzdC0+c2Vjb25kOwor
ICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVl
KCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQogICAgICAgICB2YWx1
ZUluTWFwID0ganNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCB2YWx1
ZUluTWFwKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIpCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1f
c3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBK
U1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgp
LCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApCiAgICAgICAgIHN0
cmluZ0luTWFwID0ganNPd25lZFN0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmlu
ZygpKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0luTWFwKSk7CkBA
IC0xNjQ4LDcgKzE2NDgsNyBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnRCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAg
SlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwo
KSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJp
bmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlm
ICghc3RyaW5nSW5NYXApIHsKICAgICAgICAgc3RyaW5nSW5NYXAgPSBqc1N0cmluZyhnbG9iYWxE
YXRhKCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShz
dHJpbmdJbk1hcCk7CkBAIC0xNzE4LDEwICsxNzE4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbkJvZHlO
b2RlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TGF6eU5ld0Z1bmN0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24pCiB7Ci0gICAgc3Rk
OjpwYWlyPEZ1bmN0aW9uT2Zmc2V0TWFwOjppdGVyYXRvciwgYm9vbD4gcHRyID0gbV9mdW5jdGlv
bk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAwKTsKLSAgICBpZiAocHRyLnNlY29uZCkKLSAgICAgICAg
cHRyLmZpcnN0LT5zZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0aW9uKSk7Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlv
bkludGVybmFsKGRzdCwgcHRyLmZpcnN0LT5zZWNvbmQsIHRydWUpOworICAgIEZ1bmN0aW9uT2Zm
c2V0TWFwOjpBZGRSZXN1bHQgcHRyID0gbV9mdW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAw
KTsKKyAgICBpZiAocHRyLmlzTmV3RW50cnkpCisgICAgICAgIHB0ci5pdGVyYXRvci0+c2Vjb25k
ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24obV9nbG9iYWxEYXRh
LCBmdW5jdGlvbikpOworICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIHB0
ci5pdGVyYXRvci0+c2Vjb25kLCB0cnVlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQg
aW5kZXgsIGJvb2wgZG9OdWxsQ2hlY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmI5NWNhZmI2ODI2M2E5YmY1MTBh
YTRlNDIyN2Y1ZWE0M2EzZWU5OC4uY2Q5ZGUyMmYwNTk4Nzk4ZTI3YjI3NzFiOWI4N2U0NTEzNmE5
NzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMjU2LDkgKzI1Niw5IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEdldHRlclNldHRlclBh
aXIgcGFpcihub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPigwKSk7Ci0gICAgICAgICAg
ICBzdGQ6OnBhaXI8R2V0dGVyU2V0dGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFw
LmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5zZWNvbmQgPSBu
b2RlOworICAgICAgICAgICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFw
LmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuc2Vj
b25kID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVt
YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCA0NDFjOWFlZDMzMWM4YjNlYjhkNzYyMzQwY2JhOTM1
MzRkYzUzNGVhLi5lZGU4YTliYTI0OGI5YTg5NGI3OTE3NGVkNWQzMjBmODhmNWNjYjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgaW5saW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCiAK
ICAgICAvLyBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgc2V0IC0gaWYg
c28sCiAgICAgLy8gd2UndmUgYWxyZWFkeSByZXRyYW5zbGF0ZWQgaXQsIG5vdGhpbmcgdG8gZG8g
aGVyZS4KLSAgICBpZiAoIW1fZnVuY3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJsZSkuc2Vj
b25kKQorICAgIGlmICghbV9mdW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxlKS5pc05l
d0VudHJ5KQogICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCmlu
ZGV4IDk2OTEwMWU4N2M1MzhjOTVkMTdkMTY1MWFlMmFjNWQ2ZDM2YjI1OWQuLmFjMmMzZGIyMWNm
NzRhMWE0ZDY0YjQ2ODlmZjE2ZmVmZTdiZDFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29k
ZU1hcEZvcihDb2RlQmxvY2sqCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRDb2RlTWFw
KCkpOwogICAgIAotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2RlY29k
ZWRDb2RlTWFwcy5hZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
PigpKTsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29kZUJs
b2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKICAgICAKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
KTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA5Mjg1MDU2M2FlZDUxMTUzOTdjYWM4YTQyMjc1OGIwNzRiODZhNGEzLi5mMGRhNmNjMDFiNzBl
ODc5YmI5MDk3OGM4YmE4NzA2ZmFkODY4ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTUxLDExICs1NTEsMTEgQEAgcHJpdmF0
ZToKICAgICAKICAgICBOb2RlSW5kZXggY2VsbENvbnN0YW50KEpTQ2VsbCogY2VsbCkKICAgICB7
Ci0gICAgICAgIHBhaXI8SGFzaE1hcDxKU0NlbGwqLCBOb2RlSW5kZXg+OjppdGVyYXRvciwgYm9v
bD4gaXRlciA9IG1fY2VsbENvbnN0YW50Tm9kZXMuYWRkKGNlbGwsIE5vTm9kZSk7Ci0gICAgICAg
IGlmIChpdGVyLnNlY29uZCkKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IGFkZFRv
R3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CisgICAgICAgIEhhc2hNYXA8SlND
ZWxsKiwgTm9kZUluZGV4Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2VsbENvbnN0YW50Tm9kZXMu
YWRkKGNlbGwsIE5vTm9kZSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFrSlNDb25zdGFu
dCwgT3BJbmZvKGNlbGwpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBpdGVyLmZpcnN0LT5z
ZWNvbmQ7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAg
ICAgCiAgICAgQ29kZU9yaWdpbiBjdXJyZW50Q29kZU9yaWdpbigpCkBAIC0yNTk1LDEwICsyNTk1
LDEwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlCiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsgKytpKSB7CiAgICAgICAg
ICAgICBTdHJpbmdJbXBsKiByZXAgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoaSkuaW1wbCgpOwot
ICAgICAgICAgICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
Ynl0ZUNvZGVQYXJzZXItPm1faWRlbnRpZmllck1hcC5hZGQocmVwLCBieXRlQ29kZVBhcnNlci0+
bV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgICAgICBpZiAocmVz
dWx0LnNlY29uZCkKKyAgICAgICAgICAgIElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIGJ5dGVDb2RlUGFyc2Vy
LT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2Rl
QmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihieXRlQ29kZVBhcnNlci0+bV9nbG9iYWxE
YXRhLCByZXApKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7ICsraSkgewogICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay0+Z2V0Q29uc3RhbnQoaSArIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4KTsKQEAgLTI2MTEsMTIgKzI2MTEsMTIgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5
dGVDb2RlUGFyc2UKICAgICAgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSBieXRlQ29k
ZVBhcnNlci0+bV9lbXB0eUpTVmFsdWVJbmRleDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhaXI8SlNWYWx1ZU1hcDo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFu
dFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgICAgIEpTVmFsdWVNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUo
dmFsdWUpLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdp
c3RlcnMoKSArIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2Nv
ZGVCbG9jay0+YWRkQ29uc3RhbnQodmFsdWUpOwogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFy
c2VyLT5tX2NvbnN0YW50cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNM
aW5raW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXgg
OWFlMzJjNGIwZGUyYjY5ZTMzMWE1OGFkZmM0MGU0MTUxY2EyZmE5MC4uODJmNmRmN2QxMmE4ZWYy
NzQ0MDU1MTZkZTY2YzU1MzYzOGI0ZmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKQEAgLTM1NTgsMjQgKzM1NTgsMjQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIHRvX29iamVjdCkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIEpJVFRodW5r
czo6Y3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRodW5rR2VuZXJhdG9yIGdlbmVy
YXRvcikKIHsKLSAgICBzdGQ6OnBhaXI8Q1RJU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5
ID0gbV9jdGlTdHViTWFwLmFkZChnZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpKTsK
LSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gZ2Vu
ZXJhdG9yKGdsb2JhbERhdGEpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAg
IENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9y
LCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCisg
ICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7Cisg
ICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUq
IEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsKLSAg
ICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVj
dXRhYmxlPigpKTsKLSAgICBpZiAoIXJlc3VsdC5maXJzdC0+c2Vjb25kKQotICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRh
LCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5h
dGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBj
b25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNv
bmQuZ2V0KCk7CisgICAgSG9zdEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRh
YmxlPigpKTsKKyAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKQorICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxE
YXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNU
SU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkp
LCBjb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQuZ2V0KCk7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7Ci0g
ICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVj
dXRhYmxlPigpKTsKLSAgICBpZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CisgICAgSG9zdEZ1
bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5h
ZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIGlmICghKmVu
dHJ5Lml0ZXJhdG9yLT5zZWNvbmQpIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNv
ZGU7CiAgICAgICAgIGlmIChnZW5lcmF0b3IpIHsKICAgICAgICAgICAgIGlmIChnbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSkKQEAgLTM1ODQsOSArMzU4NCw5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJ
VFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2
ZUZ1CiAgICAgICAgICAgICAgICAgY29kZSA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxs
KGdsb2JhbERhdGEsIGZ1bmN0aW9uKTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IFBh
c3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpj
cmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6
OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0
b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRp
dmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1
Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKICAgICB9
Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIGVudHJ5
Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVhckhvc3RG
dW5jdGlvblN0dWJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCBmNTg4NDdmZDI0Njc4ZjJmMjUyYzM1MWI1ZDhkM2JlOWU1MzVhYjcyLi42OTQzOTc3YTg1YTZm
ZjdjOTExYTcyYTRjODM5YjY5YzFkNzQzOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2Jq
ZWN0CiAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKICAg
ICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFk
eVZhbGlkYXRlZCkgewotICAgICAgICAgICAgc3RkOjpwYWlyPE9iamVjdFZhbGlkYXRpb25NYXA6
Oml0ZXJhdG9yLCBib29sPiBwcm9wZXJ0eUVudHJ5SXRlciA9IG9iamVjdFZhbGlkYXRvci5hZGQo
Y29udGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkpOwotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5SXRlci5zZWNvbmQpIHsKLSAgICAg
ICAgICAgICAgICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQgPT0g
UHJvcGVydHlOb2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICBPYmplY3RWYWxpZGF0aW9uTWFw
OjpBZGRSZXN1bHQgcHJvcGVydHlFbnRyeSA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5n
ZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOworICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAg
ICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCA9PSBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KTsKICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlw
ZShwcm9wZXJ0eSkgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAgICAgICAg
ZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeUl0ZXIu
Zmlyc3QtPnNlY29uZCk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3Qt
PnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGZh
aWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnkuaXRlcmF0
b3ItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vj
b25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDc1MTNkMWYxMWZkNDg5NTgyOGFmOGNhZWJlODBhZGExNWI1ZjU3Zjku
LjY4YTY5M2EzZTllZGUyYTk3OGU3ZjgxNTY0MTNkYjM4ZWNhY2E5NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgYm9vbCBkZWNsYXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAg
IHsKICAgICAgICAgYm9vbCBpc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9
IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5zZWNvbmQg
JiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAhaXNBcmd1
bWVudHM7CisgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFi
bGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuaXNOZXdFbnRyeSAmJiBtX2dsb2JhbERh
dGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3VtZW50czsKICAgICAg
ICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0
cmljdE1vZGU7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50cykKICAgICAgICAgICAgIHNldEZsYWdz
KFNoYWRvd3NBcmd1bWVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5jcHAKaW5kZXggZmJjNTc4N2NlNjU3MmE4ZDg0ZDdjMDRiZjgyMzE3ZjU4NDgw
NmI2My4uMTgyYmNjNDYyMDIyYjRlYzJjYmFjNjg1NWM1MDI5ZjY0YzcxMWZmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTExMCwxMSArMTEw
LDExIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogYykKICAgICBpZiAoaXRlciAhPSBsaXRlcmFsSWRl
bnRpZmllclRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogCi0gICAg
cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGlk
ZW50aWZpZXJUYWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0
b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CisgICAgSGFzaFNldDxTdHJp
bmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRkPGNvbnN0
IExDaGFyKiwgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yPihyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oYykpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFuc2xh
dGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhl
IHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
ZWRTdHJpbmcgPSBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkg
OiAqYWRkUmVzdWx0LmZpcnN0OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRlZFN0cmluZyA9
IGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRvcikgOiAq
YWRkUmVzdWx0Lml0ZXJhdG9yOwogCiAgICAgbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5hZGQoYywg
YWRkZWRTdHJpbmcuZ2V0KCkpOwogCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBVQ2hhciogcwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKICAgICBDaGFyQnVmZmVyPFVDaGFyPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAg
cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGds
b2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yID4oYnVmKTsKKyAgICBIYXNoU2V0PFN0cmluZ0lt
cGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+
YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9y
ID4oYnVmKTsKICAgICAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQs
IHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFp
ciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25kID8g
YWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIHJldHVy
biBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDog
KmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgpA
QCAtMjEwLDcgKzIxMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
U2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgcmV0dXJuICpnbG9iYWxEYXRhLT5pZGVudGlmaWVy
VGFibGUtPmFkZChyKS5maXJzdDsKKyAgICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50aWZpZXJU
YWJsZS0+YWRkKHIpLml0ZXJhdG9yOwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50
aWZpZXI6OmFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiOWU1YTE4NTQ0OTIz
OTc4NzQ2MDI5MmEyMmVhYjM1MmJmN2I4ZTIyLi4xNDk2MDg3NmI2ZjU4ZDg2N2I5YTVlMzgyNzVj
ZWQwNmMyYWNlNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCkBAIC0xNzgsMTEgKzE3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICAgICAg
Q2hhckJ1ZmZlcjxUPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgICAgIHBhaXI8SGFzaFNldDxT
dHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVu
dGlmaWVyVGFibGUtPmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5z
bGF0b3I8VD4gPihidWYpOworICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8
VD4sIElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CiAgICAgICAgIAog
ICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVl
ZCB0byBhZG9wdCBpdC4KICAgICAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMg
dXMgaWYgdGhhdCBpcyBzby4KLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9w
dFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgICAgIHJldHVy
biBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDog
KmFkZFJlc3VsdC5pdGVyYXRvcjsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCkBAIC0yNDYsMTAgKzI0
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJ
bXBsPiA+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBzdGQ6OnBhaXI8SGFzaFNl
dDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZh
bHVlKQorICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgSWRlbnRpZmllclRhYmxl
OjphZGQoVSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0lt
cGwqPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsK
LSAgICAgICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWJsZS5hZGQ8VSwg
Vj4odmFsdWUpOworICAgICAgICAoKnJlc3VsdC5pdGVyYXRvciktPnNldElzSWRlbnRpZmllcih0
cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMmM2MjBiNGFlNTg5ZDFlYzllNmY0NzY5MmU0
NDZjZmE4NTYzZDQwMS4uMGZmYTA3NmNlYWYwOTYwNGZhYmFiYzBmNjk1N2MxNTZmMWYxYWUzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5NSwxMCAr
MTk1LDEwIEBAIHZvaWQgSlNBcnJheTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAgIHRoaXNP
YmplY3QtPmRlYWxsb2NhdGVTcGFyc2VNYXAoKTsKIH0KIAotaW5saW5lIHN0ZDo6cGFpcjxTcGFy
c2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRk
KEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpKQoraW5saW5lIFNwYXJzZUFycmF5VmFsdWVNYXA6
OkFkZFJlc3VsdCBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXksIHVuc2ln
bmVkIGkpCiB7CiAgICAgU3BhcnNlQXJyYXlFbnRyeSBlbnRyeTsKLSAgICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CisgICAgQWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CiAgICAgc2l6ZV90IGNhcGFjaXR5ID0gbV9t
YXAuY2FwYWNpdHkoKTsKICAgICBpZiAoY2FwYWNpdHkgIT0gbV9yZXBvcnRlZENhcGFjaXR5KSB7
CiAgICAgICAgIEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoKGNhcGFj
aXR5IC0gbV9yZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2YodW5zaWduZWQpICsgc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpKTsKQEAgLTIwOSwxNCArMjA5LDE0IEBAIGlubGluZSBzdGQ6
OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IFNwYXJzZUFycmF5VmFs
dWVNYXA6OmFkZChKCiAKIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVu
dHJ5JiBlbnRyeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCByZXN1bHQg
PSBhZGQoYXJyYXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwg
d2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5j
b21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMg
bm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhh
dmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCAmJiAhYXJy
YXktPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAgIHJlbW92ZShyZXN1bHQuZmlyc3QpOworICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAg
ICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBpbmxp
bmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5
KiBhcnJheSwgdW5zaWduZWQgaQogCiBpbmxpbmUgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpw
dXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBzdGQ6OnBhaXI8U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7Ci0gICAg
U3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBBZGRS
ZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRy
eSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8gc2F2ZSBhIHNlcGFyYXRl
IGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAuCiAgICAg
Ly8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5LCBhbmQg
dGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90IHRoZSByaWdo
dCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCi0gICAgaWYgKHJlc3VsdC5z
ZWNvbmQgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAgICByZW1vdmUocmVzdWx0
LmZpcnN0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4dGVuc2li
bGUoKSkgeworICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJu
IHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5
IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgIH0KIApAQCAtMzU1LDcg
KzM1NSw3IEBAIHZvaWQgSlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBhbHdheXMgYmUgYSBuZXcgZW50cnkg
aW4gdGhlIG1hcCwgc28gbm8gbmVlZCB0byBjaGVjayB3ZSBjYW4gd3JpdGUsCiAgICAgICAgIC8v
IGFuZCBhdHRyaWJ1dGVzIGFyZSBkZWZhdWx0IHNvIG5vIG5lZWQgdG8gc2V0IHRoZW0uCiAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkpLmZpcnN0LT5zZWNv
bmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIG1hcC0+YWRkKHRo
aXMsIGkpLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAg
ICB9CiAKICAgICB2b2lkKiBuZXdSYXdTdG9yYWdlID0gMDsKQEAgLTQzMCwxNSArNDMwLDE1IEBA
IGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duTnVtZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaW5kZXgsIFByb3BlcnR5CiAgICAgQVNTRVJUKG1hcCk7CiAKICAgICAvLyAxLiBM
ZXQgY3VycmVudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHld
XSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIHByb3BlcnR5IG5hbWUgUC4KLSAgICBzdGQ6OnBh
aXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRk
KHRoaXMsIGluZGV4KTsKLSAgICBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwID0gJnJlc3Vs
dC5maXJzdC0+c2Vjb25kOworICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7CisgICAgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJ
bk1hcCA9ICZyZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIC8vIDIuIExldCBleHRlbnNp
YmxlIGJlIHRoZSB2YWx1ZSBvZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVydHkg
b2YgTy4KICAgICAvLyAzLiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBp
cyBmYWxzZSwgdGhlbiBSZWplY3QuCiAgICAgLy8gNC4gSWYgY3VycmVudCBpcyB1bmRlZmluZWQg
YW5kIGV4dGVuc2libGUgaXMgdHJ1ZSwgdGhlbgotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKCkp
IHsKLSAgICAgICAgICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgICAgICAgICBt
YXAtPnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChl
eGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9i
amVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBhZDk4ZDY2MTkwYjAzY2E1NWM4NGEwMjhj
NDg5MzAyYjUxYjE4YjliLi44OTBmZGY0ZjBhMDk0NGU1ODRiNjZmMWY2NGUzNTgxM2M5NzI0MzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC01NSw2ICs1NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBNYXA6Oml0
ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIE1hcDo6Y29uc3RfaXRlcmF0b3IgY29u
c3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgTWFwOjpBZGRSZXN1bHQgQWRkUmVzdWx0Owog
CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAoKQogICAgICAgICAgICAgOiBtX2ZsYWdzKE5v
cm1hbCkKQEAgLTg3LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZXNl
IG1ldGhvZHMgbWF5IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAogICAgICAgICB2b2lk
IHB1dChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGJvb2w+IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOworICAgICAgICBBZGRSZXN1bHQg
YWRkKEpTQXJyYXkqLCB1bnNpZ25lZCk7CiAgICAgICAgIGl0ZXJhdG9yIGZpbmQodW5zaWduZWQg
aSkgeyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQogICAgICAgICAvLyBUaGlzIHNob3VsZCBBU1NF
UlQgdGhlIHJlbW92ZSBpcyB2YWxpZCAoY2hlY2sgdGhlIHJlc3VsdCBvZiB0aGUgZmluZCkuCiAg
ICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yIGl0KSB7IG1fbWFwLnJlbW92ZShpdCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cAppbmRleCA4ZWZiNDA2NWUxNzM5Y2YwNWQ1ZDkxNjZjNzViZWNkODBkZGUzMGZjLi45YmFlOTQw
OTc0MDA4NTJhY2EwYzAzZjRiNzllNDI1YmI0YzMzMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAg
ICAgICAgbV9zZXQuYWRkKG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV0uaW1wbCgpKTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5zZWNvbmQpCisg
ICAgICAgIGlmICghbV9zZXQuYWRkKGlkZW50aWZpZXIpLmlzTmV3RW50cnkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKaW5kZXggZTM0MDhiMDhiYjI2YWM5NDhmNzdj
NzVmMmEzODE0MTcwODY3ZDQ0MS4uMTI3ZDAyOGUwZjU0MmYyOWI5YTgwY2FhOGI3MTFmMjY2YjQ5
YTU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIuaApAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJp
bmdSZWN1cnNpb25DaGVja2VyOjpwZXJmb3JtQ2hlY2soKQogICAgIGludCBzaXplID0gbV9leGVj
LT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5zaXplKCk7
CiAgICAgaWYgKHNpemUgPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggJiYgc2l6ZSA+PSBt
X2V4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCiAgICAgICAgIHJldHVybiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcigpOwotICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhbV9leGVj
LT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5hZGQobV90
aGlzT2JqZWN0KS5zZWNvbmQ7CisgICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4ZWMtPmds
b2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZChtX3RoaXNP
YmplY3QpLmlzTmV3RW50cnk7CiAgICAgaWYgKGFscmVhZHlWaXNpdGVkKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgLy8gUmV0dXJuIGVtcHR5IHN0cmluZyB0byBhdm9pZCBpbmZpbml0
ZSByZWN1cnNpb24uCiAgICAgcmV0dXJuIEpTVmFsdWUoKTsgLy8gSW5kaWNhdGUgc3VjY2Vzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZlZTQx
OWRhNmE3OGY4MTI2NmJlZTJkNmE0YWY1YzU2ZDllZDk3NTMuLjUyZWIxYzc0OGQzNDcwNTUyMzAx
Y2FlNWUwMzIxNjQ5NDM3YTY3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlOjphZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHMKICAgICAvLyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4gc3RkOjptYWtlX3Bh
aXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBydmFsdWUgcmVmZXJlbmNlcy4KICAgICAvLyBXaGVuIGVp
dGhlciBvZiB0aGUgcGFyYW1ldGVycyBhcmUgYml0ZmllbGRzLCB0aGUgQysrIGNvbXBpbGVyIHdp
bGwgdHJ5IHRvIGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3aGljaCBpcyBpbnZhbGlkLiBUbyB3b3Jr
IGFyb3VuZCB0aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1ha2UgdGhlIHBhcmFtZXRlciBhbiBydmFs
dWUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTI2MSBmb3IgbW9yZSBkZXRhaWxzCi0gICAgc3RkOjpwYWlyPFRyYW5zaXRpb25NYXA6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFpcihzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlv
dXMpLCBzdHJ1Y3R1cmUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgIFRyYW5zaXRp
b25NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFp
cihzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0lu
UHJldmlvdXMpLCBzdHJ1Y3R1cmUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgLy8gVGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSEgLSB3ZSBzaG91bGQgb25seSBoaXQg
dGhpcyB3aGVuIGRlc3BlY2lmeWluZy4KLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC5nZXQo
KS5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NFUlQocmVz
dWx0Lml0ZXJhdG9yLmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAg
ICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAg
ICAgICAgbWFwKCktPnNldChyZXN1bHQuZmlyc3QsIHN0cnVjdHVyZSk7CisgICAgICAgIG1hcCgp
LT5zZXQocmVzdWx0Lml0ZXJhdG9yLCBzdHJ1Y3R1cmUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCAxYmIzY2Q1YmIzZDliZTk2Nzgz
MTI5ZThlNWFlMjEzMGQyZThiZjc4Li5mMDFhMGM4MjZiMWM0N2Y3NzRiYTM3MWIzMzJjNmFlM2Q3
NGJjODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAt
NzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJhdG9yOwog
ICAgIH07CiAKKyAgICB0eXBlZGVmIFdURjo6SGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBB
ZGRSZXN1bHQ7CisKICAgICBXZWFrR0NNYXAoKQogICAgIHsKICAgICB9CkBAIC0xMjEsMTcgKzEy
MywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAgICB9CiAK
LSAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICBBZGRSZXN1bHQgYWRk
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5
cGUgdmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9y
LCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7Ci0gICAgICAgIGlmIChpdGVyLnNlY29u
ZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAu
YWRkKGtleSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAg
ICAgSGFuZGxlU2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5oZWFwLmhhbmRsZUhlYXAoKS0+YWxsb2Nh
dGUoKTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7CisgICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7CiAgICAgICAgICAgICBIYW5kbGVIZWFw
OjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBGaW5hbGl6ZXJDYWxsYmFjazo6
ZmluYWxpemVyQ29udGV4dEZvcihrZXkpKTsKICAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBG
b3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CiAgICAgICAgICAgICAqc2xvdCA9
IHZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpdGVyOworICAgICAgICAvLyBXZWFr
R0NNYXAgZXhwb3NlcyBhIGRpZmZlcmVudCBpdGVyYXRvciwgc28gd2UgbmVlZCB0byB3cmFwIGl0
IGFuZCBjcmVhdGUgb3VyIG93biBBZGRSZXN1bHQuCisgICAgICAgIHJldHVybiBBZGRSZXN1bHQo
aXRlcmF0b3IocmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIHNldChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUgdmFsdWUpCkBAIC0x
NDQsMTIgKzE0NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgcGFpcjx0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1f
bWFwLmFkZChrZXksIDApOwotICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBpdGVyLmZpcnN0LT5z
ZWNvbmQ7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBU
eXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIEhhbmRs
ZVNsb3Qgc2xvdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmhlYXAuaGFuZGxl
SGVhcCgpLT5hbGxvY2F0ZSgpOwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90
KS0+bWFrZVdlYWsoc2xvdCwgdGhpcywga2V5KTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNl
Y29uZCA9IHNsb3Q7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7
CiAgICAgICAgIH0KICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJy
aWVyKHNsb3QsIHZhbHVlKTsKICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAppbmRleCA2MGQ1OTkyOGE0NjdhNjE3
ZTJmM2E3ODFlYmUyMDA1MTVlMzZkOTAwLi45ZGUzOWFkOGEyOTg2MjJjNDMzYTY3ZWI2NGE3MjIw
NGRlMTllNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmls
ZVRyZWVOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVl
Tm9kZS5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2hpbGRyZW4g
PSBuZXcgTWFwKCk7CiAgICAgCiAgICAgICAgIFByb2ZpbGVUcmVlTm9kZSBuZXdFbnRyeTsKLSAg
ICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQo
U3RyaW5nKG5hbWUpLCBuZXdFbnRyeSk7Ci0gICAgICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJ
bk1hcCA9ICZyZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOworICAgICAgICBQ
cm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgICsrY2hpbGRJbk1hcC0+bV9jb3VudDsKICAgICAgICAgcmV0dXJuIGNoaWxkSW5NYXA7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggY2FmYjI2NDllYjYyNDcxYWNjOTZm
NGNmMzc4OWVjMDQ5ZDc0MDBlZS4uZDdkOWU0M2E5YTU1YTFmZGZhODgzZjc4OTdhMTA3Nzk5YTVj
ZmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogICAgICAg
ICAKICAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQogICAgICAgICAKQEAgLTU3LDcgKzU4LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIEluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4g
ZXF1YWwgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHRoZSByZXR1cm4gdmFs
dWUgaXMgYSBwYWlyIG9mIGFuIGludGVyYXRvciB0byB0aGUgbmV3IHZhbHVlJ3MgCiAgICAgICAg
IC8vIGxvY2F0aW9uLCBhbmQgYSBib29sIHRoYXQgaXMgdHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2Fz
IGFkZGVkLgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1
ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFJlZHVjZXMgdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSwgYW5kIHJlbW92
ZXMgaXQgaWYgY291bnQKICAgICAgICAgLy8gZ29lcyBkb3duIHRvIHplcm8sIHJldHVybnMgdHJ1
ZSBpZiB0aGUgdmFsdWUgaXMgcmVtb3ZlZC4KQEAgLTE0MiwxMCArMTQzLDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSBzdGQ6OnBhaXI8
dHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0
ZXJhdG9yLCBib29sPiBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5
cGUgJnZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9pbXBsLmFkZCh2YWx1ZSwgMCk7IAotICAgICAgICArK3Jlc3VsdC5maXJzdC0+c2Vjb25kOwor
ICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7CisgICAgICAg
ICsrcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCmluZGV4IGJlN2U5ZWJlZDEzNzkzYmE3OGUwY2FmZDczOTA1YjFlMDRj
MzA1NzguLjI2YTlkOWM1Y2IxNThkM2E1ZmViNzJlYzVjYzg1MGE4ZTYwMTYzZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5
cGU+IGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFw
dGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKQEAgLTk0LDEyICs5NSwxMiBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0IG5vdCBrZXkg
aWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBw
YWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5k
IGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQ
YXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBl
ZFBhc3NJblR5cGUpOwogCiAgICAgICAgIC8vIGRvZXMgbm90aGluZyBpZiBrZXkgaXMgYWxyZWFk
eSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJh
dG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQn
cyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAg
ICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CiAK
ICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92
ZShpdGVyYXRvcik7CkBAIC0xMjIsMTIgKzEyMywxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJik7CiAgICAgICAgIC8vICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgVmFsdWVUeXBlJiwgY29uc3QgVCYpOwogICAgICAgICAvLyAg
IHN0YXRpYyB0cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2Rl
KTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlwZSk7Cisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBBZGRS
ZXN1bHQgYWRkKGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJl
bmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1h
cHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwogCiAgICAgICAgIGNsYXNzIEhhc2hNYXBLZXlzUHJv
eHkgOiBwcml2YXRlIEhhc2hNYXAgewogICAgICAgICBwdWJsaWM6CkBAIC0zMTksMzQgKzMyMCwz
NCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGlu
ZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgor
ICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBh
c3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPFZhbHVlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiA+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlw
ZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQp
IAogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFk
ZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJv
dmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhl
IG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCBy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1h
cHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUWVBFLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFk
ZChjb25zdCBUWVBFJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNs
YXRvckFkYXB0ZXI8VmFsdWVUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPiA+KGtleSwgdmFsdWUpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUs
IFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3Qg
S2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IDMzY2IxNGRhYWI2ODI2
ODdmMGFlOGU2YzJjOGYxYjJiYWVmOGFiOTYuLjFiM2IyZTI4NzMzNDM5YjEwYmI3NTNjOTA0ZDU0
ZmZlYzU1ZjI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFw
dGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBj
b25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpB
ZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7CiAKQEAg
LTc2LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2
YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlv
biwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3
YXMgYWRkZWQuCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5
cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAogICAgICAg
ICAvLyBBbiBhbHRlcm5hdGUgdmVyc2lvbiBvZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3Qg
YnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCiAgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBl
LCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBh
bHJlYWR5CkBAIC04Niw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyAgIHN0
YXRpYyB0cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2RlKTsK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdGVt
cGxhdGUgYXJndW1lbnRzIHNvIHRoYXQgY2FsbGVycwogICAgICAgICAvLyBjYW4ganVzdCBwYXNz
IHRoZSB0cmFuc2xhdG9yIGFuZCBsZXQgdGhlIGNvbXBpbGVyIGRlZHVjZSBULgotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRv
ciwgYm9vbD4gYWRkKGNvbnN0IFQmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYpOwogCiAgICAgICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvcik7CkBAIC0xNzcsMTQgKzE3OCwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBwYWlyPHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46Oml0ZXJhdG9yLCBib29sPiBIYXNoU2V0
PFQsIFUsIFY+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaFNldDxULCBVLCBWPjo6QWRkUmVzdWx0IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFs
dWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5l
IHR5cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3Vs
dAogICAgIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBU
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2lu
Z0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4gPih2YWx1
ZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAwNTcyMmQ5YzU1NmE3OTdiNDE4ODA3MjBkN2Nl
MzAwNTdmYjVmNmI2Li45YmQ1NDgyZmFjZWI3MjA5NDRjZTRjNTMxMTc0NzQwYmU0M2JiNmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaApAQCAtMjk2LDYgKzI5NiwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdHJhbnNsYXRl
KFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgY29uc3QgVCYgdmFsdWUpIHsgbG9jYXRpb24gPSB2YWx1
ZTsgfQogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+IHN0cnVj
dCBIYXNoVGFibGVBZGRSZXN1bHQgeworICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQoSXRlcmF0
b3JUeXBlIGl0ZXIsIGJvb2wgaXNOZXdFbnRyeSkgOiBpdGVyYXRvcihpdGVyKSwgaXNOZXdFbnRy
eShpc05ld0VudHJ5KSB7IH0KKyAgICAgICAgSXRlcmF0b3JUeXBlIGl0ZXJhdG9yOworICAgICAg
ICBib29sIGlzTmV3RW50cnk7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgY2xhc3MgSGFzaFRh
YmxlIHsKICAgICBwdWJsaWM6CkBAIC0zMDUsNiArMzExLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVU
eXBlOwogICAgICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8SGFzaEZ1bmN0aW9u
cz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVBZGRS
ZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKIAogICAgICAgICBIYXNoVGFibGUoKTsKICAgICAg
ICAgfkhhc2hUYWJsZSgpIApAQCAtMzMwLDEzICszMzcsMTMgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9CiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKLSAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0
dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUp
LCB2YWx1ZSk7IH0KKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0
KHZhbHVlKSwgdmFsdWUpOyB9CiAKICAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRk
KCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAg
ICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252
ZXJzaW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUu
Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0
eXBlbmFtZSBFeHRyYT4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGRQYXNzaW5n
SGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJl
c3VsdCBhZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJl
c3VsdCBhZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOwogCiAg
ICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJldHVybiBmaW5kPElk
ZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZmlu
ZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xh
dG9yVHlwZT4oa2V5KTsgfQpAQCAtNjY1LDcgKzY3Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpp
dGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYg
ZXh0cmEpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6YWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQogICAgIHsKICAgICAgICAg
Y2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKQEAgLTcwMCw3ICs3MDcsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4
dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1
Y2tldCgqZW50cnkpKQogICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsK
QEAgLTcxMSw3ICs3MTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICBpZiAo
aXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRy
eSA9IGVudHJ5OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVh
bChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRl
cmF0b3IoZW50cnkpLCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAjaWYgRFVNUF9IQVNIVEFCTEVf
U1RBVFMKICAgICAgICAgICAgICsrcHJvYmVDb3VudDsKQEAgLTczOCwxOSArNzQ1LDE5IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAgICAgLy8gZm9sbG93IGEgcGl2b3QgZW50cnkgYW5kIHJl
dHVybiB0aGUgbmV3IHBvc2l0aW9uLgogICAgICAgICAgICAgS2V5VHlwZSBlbnRlcmVkS2V5ID0g
RXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAgICBleHBhbmQoKTsKLSAgICAg
ICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVy
ZWRLZXkpLCB0cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVChwLmZpcnN0ICE9IGVuZCgpKTsKLSAg
ICAgICAgICAgIHJldHVybiBwOworICAgICAgICAgICAgQWRkUmVzdWx0IHJlc3VsdChmaW5kKGVu
dGVyZWRLZXkpLCB0cnVlKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3IgIT0g
ZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAgCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0
cnVlKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50
cnkpLCB0cnVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBpbmxpbmUgcGFp
cjx0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3Np
bmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKKyAgICBpbmxpbmUg
dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENv
ZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAgICAgICBjaGVj
a0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIApAQCAtNzY4LDcgKzc3NSw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICB1bnNpZ25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKICAgICAg
ICAgCiAgICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAgICAgICAg
aW5pdGlhbGl6ZUJ1Y2tldCgqZW50cnkpOwpAQCAtNzgzLDE0ICs3OTAsMTQgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICAvLyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBhbmQgcmV0dXJuIHRo
ZSBuZXcgcG9zaXRpb24uCiAgICAgICAgICAgICBLZXlUeXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0
b3I6OmV4dHJhY3QoKmVudHJ5KTsKICAgICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gcCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQoZW50ZXJlZEtleSks
IHRydWUpOwotICAgICAgICAgICAgQVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkpOwotICAgICAgICAg
ICAgcmV0dXJuIHA7CisgICAgICAgICAgICBBZGRSZXN1bHQgcmVzdWx0KGZpbmQoZW50ZXJlZEtl
eSksIHRydWUpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvciAhPSBlbmQoKSk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgaW50ZXJu
YWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IDc5OTQ2NmZhOThjNmRmN2UyNWIyMDY3YzJh
MjAwZjQ3OTQ3M2FjMTIuLjIxZTM4ZDgzYWI0NzA2NzgxYzM3YjE1MWYxZGNlMTEyMjQ5MzJjODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvTGlzdEhhc2hTZXQuaApAQCAtODEsNiArODEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwg
aW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwg
aW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+OwogCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQWRk
UmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7CisKICAgICAgICAgTGlzdEhhc2hTZXQoKTsKICAg
ICAgICAgTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICAgICAgTGlzdEhhc2hT
ZXQmIG9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYpOwpAQCAtMTI0LDEwICsxMjYsMTAgQEAg
bmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiBhZGQgaXMg
YSBwYWlyIG9mIGFuIGl0ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlvbiwgCiAgICAg
ICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQu
Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAg
ICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFk
ZFJlc3VsdCBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3Qg
VmFsdWVUeXBlJiBuZXdWYWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbnNlcnRCZWZvcmUoaXRl
cmF0b3IsIGNvbnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFZh
bHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CkBAIC02OTUsMjYgKzY5
NywyNSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQor
ICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0
IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAm
dmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUs
IG1fYWxsb2NhdG9yLmdldCgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAg
ICAgICBhcHBlbmROb2RlKCpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKKyAgICAg
ICAgdHlwZW5hbWUgSW1wbFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUg
YWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhcHBlbmROb2RlKCpyZXN1bHQuaXRl
cmF0b3IpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0
ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVu
YW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExp
c3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0
LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQs
IGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1Zh
bHVlKQogICAgIHsKLSAgICAgICAgcGFpcjx0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVl
LCBtX2FsbG9jYXRvci5nZXQoKSk7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAg
ICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuZmlyc3QpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1
bHQuc2Vjb25kKTsKLQorICAgICAgICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9j
YXRvci5nZXQoKSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
IGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAg
cmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5p
c05ld0VudHJ5KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVl
LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQs
IGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0
IFZhbHVlVHlwZSYgbmV3VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gaW5zZXJ0QmVmb3Jl
KGZpbmQoYmVmb3JlVmFsdWUpLCBuZXdWYWx1ZSk7IAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAu
aAppbmRleCBmNDhhNTljZjYzNzAyMjY0MDQyNTIwM2M4ZTQyZDE2YmVkOGI1MTczLi4wYWYzNmJl
NjAyN2ZiNTAwYmJmZWE1YzIxZGM2ZTA4Y2RmMDE5ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHJIYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5o
CkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBl
PiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
cjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAg
ICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKIApAQCAtODYsMTQgKzg3LDE0IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtleSBpZiBrZXkgaXMgYWxy
ZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0
ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRo
YXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWly
PGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJ
blR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFz
c0luVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBzZXQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0lu
VHlwZSk7CiAKICAgICAgICAgLy8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNl
bnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8g
dGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUg
aWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAotICAgICAgICBw
YWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7IAor
ICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsK
KyAgICAgICAgQWRkUmVzdWx0IGFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAog
ICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3Zl
KFJhd0tleVR5cGUpOwpAQCAtMTA0LDggKzEwNSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKFJhd0tleVR5cGUpOyAvLyBlZmZpY2llbnQgY29tYmlu
YXRpb24gb2YgZ2V0IHdpdGggcmVtb3ZlCiAKICAgICBwcml2YXRlOgotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVy
ZW5jZVR5cGUpOwotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoUmF3S2V5
VHlwZSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxp
bmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOworICAgICAg
ICBBZGRSZXN1bHQgaW5saW5lQWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5
cGUpOwogCiAgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0xOTUsNTIg
KzE5Niw1MiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAg
IGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBW
LCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpp
bmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1h
cHBlZCkgCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xh
dG9yPihrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUg
cGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBi
b29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46
OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aW5saW5lQWRk
KFJhd0tleVR5cGUga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkgCiAgICAg
ewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xhdG9yPihrZXksIG1h
cHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hN
YXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUg
SGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJl
ZlB0cjxUPiwgVSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJ
blR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkg
eworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKKyAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGlu
ZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5l
ZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0
b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAgTWFwcGVkVHJh
aXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFp
cjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29s
PgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0
CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoUmF3S2V5VHlwZSBrZXks
IE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVz
dWx0LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwg
bWFwcGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAg
Ly8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUg
ZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBw
ZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAg
ICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0
ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQoY29u
c3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAg
IHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJh
dG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6
QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQoUmF3S2V5
VHlwZSBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVj
dHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCA1OWJjNGEyOWE5ZDhkNzc1
MWIyZGQxZDAzMWI4NTIzYzY1YjYzNDdkLi41ZTdhNDg0Y2Q4NzY2YmNhZjIyY2E0YzkzZGRjZTk3
MGRkMmJhMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEpCiAgICAg
ewotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIGNvdW50KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQgKz0gY291bnQ7CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
dW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7
CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCArPSBjb3VudDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbG9uZyBn
ZXQoY29uc3QgVCYga2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAppbmRleCBlYzVk
ZTcyMjAwZjU3NWQ3NzRjYzIwZDkxYTkzOGU5ZDlkOWYwMjY5Li4zYTkwM2Y4OTVlMGY5NjVmNDY0
ZmVjZjhiMDljYmE5MzcyNDBiZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJl
YWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApAQCAtNjMs
MTAgKzYzLDEwIEBAIElkZW50aWZpZXJUYWJsZTo6fklkZW50aWZpZXJUYWJsZSgpCiAgICAgICAg
ICgqaXRlciktPnNldElzSWRlbnRpZmllcihmYWxzZSk7CiB9CiAKLXN0ZDo6cGFpcjxIYXNoU2V0
PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRkKFN0cmlu
Z0ltcGwqIHZhbHVlKQorSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBJZGVudGlmaWVy
VGFibGU6OmFkZChTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxT
dHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7
Ci0gICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgSGFzaFNl
dDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7Cisg
ICAgKCpyZXN1bHQuaXRlcmF0b3IpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5o
IGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCmluZGV4IGIwMmQxMGQ3YzgxOTFhN2E1
ZmU3YjVlN2E3MjQ0MmY1NjhmZDQ2N2QuLmRiYzViYTZhYzU0Zjg1OGE3MjQ4YjczY2MwOTY5NzY5
ZjA5YTNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3Mg
SWRlbnRpZmllclRhYmxlIHsKIHB1YmxpYzoKICAgICB+SWRlbnRpZmllclRhYmxlKCk7CiAKLSAg
ICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGQoU3Ry
aW5nSW1wbCogdmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRk
KFN0cmluZ0ltcGwqIHZhbHVlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PgotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZChVIHZhbHVlKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZChVIHZh
bHVlKTsKIAogICAgIGJvb2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGQ3NzVlN2JiOTRmZmUwNjM2ZGYzM2JhMmRlM2Vk
NWMzNWM5ZjkxZGMuLjY2YmQ3ODUxYTAwNTJkYzRlMTk2YzFiYjQwYTVkM2E4MTM5NWU2MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0
aWMgaW5saW5lIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewotICAg
IHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBz
dHJpbmdUYWJsZSgpLmFkZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOworICAgIEhhc2hTZXQ8
U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nVGFibGUoKS5hZGQ8VCwg
SGFzaFRyYW5zbGF0b3I+KHZhbHVlKTsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHkt
dHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFu
IGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3Vs
dC5zZWNvbmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7
CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5p
dGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5z
bGF0b3IgewpAQCAtMzAwLDcgKzMwMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWlj
U3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIGlmICghci0+bGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgU3RyaW5nSW1wbCog
cmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRkKHIpLmZpcnN0OworICAgIFN0cmluZ0ltcGwqIHJl
c3VsdCA9ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAgICBpZiAocmVzdWx0ID09
IHIpCiAgICAgICAgIHItPnNldElzQXRvbWljKHRydWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTU4Yzk4ZDdmZjg3NDAzOGU1MTdi
NjBkMTk3M2M3MjhkY2ZhYjc5Li44MzdiOGZiZDIyMDVhZGM5NzQ4NmRkM2YwZThmMDIwNzM4MGY4
ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiAgICAgQ29vcmRpbmF0aW9uSW5mb01hcDo6aXRlcmF0b3IgY29vcmRp
bmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmZpbmQoZGJJZGVudGlm
aWVyKTsKICAgICBpZiAoY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID09IG1fY29vcmRpbmF0aW9u
SW5mb01hcC5lbmQoKSkgewogICAgICAgICAvLyBObyBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3Ig
dGhpcyBEQgotICAgICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlv
bkluZm9NYXAuYWRkKGRiSWRlbnRpZmllciwgQ29vcmRpbmF0aW9uSW5mbygpKS5maXJzdDsKKyAg
ICAgICAgY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmFk
ZChkYklkZW50aWZpZXIsIENvb3JkaW5hdGlvbkluZm8oKSkuaXRlcmF0b3I7CiAgICAgfQogCiAg
ICAgQ29vcmRpbmF0aW9uSW5mbyYgaW5mbyA9IGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvci0+c2Vj
b25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJv
bWl1bS9RdW90YVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCmluZGV4IDJhMDk2Mjc5OGJiZWYzMjU0ZDAxNzU4
Mzg1NzFiZTNiNDEyNzE2NjcuLjEwYjA4YTJiNzIzY2RhMjkyMGQ0M2RlZmExOGMzMTE1ZWZhMWIy
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21p
dW0vUXVvdGFUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBRdW90
YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0
YWJhc2VTaXplKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhKG1fZGF0YUd1YXJkKTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgU2l6ZU1hcD46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVNpemVz
LmFkZChvcmlnaW5JZGVudGlmaWVyLCBTaXplTWFwKCkpLmZpcnN0OworICAgIEhhc2hNYXA8U3Ry
aW5nLCBTaXplTWFwPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlU2l6ZXMuYWRkKG9yaWdpbklk
ZW50aWZpZXIsIFNpemVNYXAoKSkuaXRlcmF0b3I7CiAgICAgaXQtPnNlY29uZC5zZXQoZGF0YWJh
c2VOYW1lLCBkYXRhYmFzZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCmluZGV4IDJjMGU5NDgzNmYzYzY0NzIyMjJh
YjY3MmQ0MzM3NzdmM2UxYTYwNzcuLjIxNmI5NDVjNDliOTExZTNmNDVlZmU1YTdlNGMxMzI5NmYz
MGViMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhh
c2hUYWJsZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhh
c2hUYWJsZU1hcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaE1hcDxj
b25zdCBKU0M6Okhhc2hUYWJsZSosIEpTQzo6SGFzaFRhYmxlPjo6aXRlcmF0b3IgaXRlciA9IG1f
bWFwLmZpbmQoc3RhdGljVGFibGUpOwogICAgICAgICBpZiAoaXRlciAhPSBtX21hcC5lbmQoKSkK
ICAgICAgICAgICAgIHJldHVybiAmaXRlci0+c2Vjb25kOwotICAgICAgICByZXR1cm4gJm1fbWFw
LnNldChzdGF0aWNUYWJsZSwgSlNDOjpIYXNoVGFibGUoKnN0YXRpY1RhYmxlKSkuZmlyc3QtPnNl
Y29uZDsKKyAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpTQzo6SGFzaFRh
YmxlKCpzdGF0aWNUYWJsZSkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMDA1MGE3
MzE1N2ZkZmNiNWRlMDc2MWYzMjVmNmZkMTVhYzAwMDc2ZC4uYzExZjYwMTAzOGE2NjAwNjliYWE1
ZDk5MjZjYzI1ZDJiZWQwNDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0cnVj
dHVyZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHUK
IHsKICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3Ry
dWN0dXJlcygpOwogICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsK
LSAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
KS5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0lu
Zm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIEpT
Qzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkJiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCmluZGV4IGIwNDlkOWIyY2FlNTBjYjNjMzMxNmY3YjM4MjAwZDhjODdmZDYwZGQuLjdlZWJj
NzdkNDAxMWI4NDI4ZTFhMzdkZGI4YmM0OTQ2YjNmN2VmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBQYXJhbWV0
ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgaWYgKHNldElubGluZUNhY2hlZFdyYXBwZXIod29y
bGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEpT
Qzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPiBwYXNzV2Vhaygqd29ybGQtPmdsb2JhbERhdGEoKSwg
d3JhcHBlciwgd3JhcHBlck93bmVyKHdvcmxkLCBkb21PYmplY3QpLCB3cmFwcGVyQ29udGV4dCh3
b3JsZCwgZG9tT2JqZWN0KSk7Ci0gICAgICAgIHBhaXI8RE9NT2JqZWN0V3JhcHBlck1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IHdvcmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmplY3QsIHBh
c3NXZWFrKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOwor
ICAgICAgICBET01PYmplY3RXcmFwcGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gd29ybGQtPm1f
d3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWspOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYWRj
ZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMC4uNzRmMzViMGI3OTJjMWMwNjAz
N2QxYWRlZjNiMjMxMzY1OGE5MmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNz
OjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCks
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZD
b25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlND
OjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19p
bmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpz
X2luZm8sIHRlbXApLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCmluZGV4IGM4ZjE2ZjVhOTYxNjViZThlMTNkYjJiZWI1ZWFiMTYwODM3ZTky
MGMuLmJkZWU0Njg3ZDZjMDQyMTE2M2VlODljM2IwMTBjNmE0YjhlN2RlZWEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApA
QCAtODIsMTEgKzgyLDExIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnCiAgICAgQVNTRVJUX0FS
RyhsaXN0ZW5lciwgbGlzdGVuZXIpOwogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAKLSAg
ICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VM
aXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsKKyAgICBQYWdlTGlzdGVu
ZXJzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmFkZChwYWdlLCAw
KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OwogCi0gICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9
IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7CiAKICAg
ICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBmNDk1Y2VkYzg2MzlmMGZmM2Fj
OTdjYzM2M2M2MzdhYzQxY2QzMjUwLi4xMGRlZDcwMDcwNzk0MDIzZGM3ZWQyMTI5OWZjZmIyNDg2
MTIxN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAg
ICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAgICBpZiAo
aXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAo
KSkuZmlyc3Q7CisgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJj
ZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcmF0b3I7CiAgICAgaWYgKGl0LT5z
ZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSkpCiAgICAgICAg
IHJldHVybiAiIjsKICAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1i
ZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2ZjBhODE0ODc0MTM3ZjUy
NWJjNDk1MzZlMzE0MmZhMTg4MjJlZGUuLjdhYzE1NWNjZTZjYzJhNGRkOWFiN2JhYzc3ZDE1MDk0
OGVhZmMwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHJpdmF0ZToKICAgICBi
b29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAgICB7CiAgICAgICAg
IC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCi0gICAgICAgIHBhaXI8
T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVj
dCwgbV9vYmplY3RQb29sLnNpemUoKSk7CisgICAgICAgIE9iamVjdFBvb2w6OkFkZFJlc3VsdCBh
ZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7
CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAg
ICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwotICAgICAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGl0ZXIuZmlyc3QtPnNlY29uZCkgPCBtX29iamVj
dFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoaXRlci5maXJzdC0+
c2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihhZGRSZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgICAg
IHdyaXRlT2JqZWN0SW5kZXgoYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzI2LDEwICs3MjYsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAg
IHsKICAgICAgICAgVVN0cmluZyBzdHIgPSBpZGVudC51c3RyaW5nKCk7Ci0gICAgICAgIHBhaXI8
U3RyaW5nQ29uc3RhbnRQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fY29uc3RhbnRQb29s
LmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBpZiAoIWl0
ZXIuc2Vjb25kKSB7CisgICAgICAgIFN0cmluZ0NvbnN0YW50UG9vbDo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IG1fY29uc3RhbnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXpl
KCkpOworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICB3
cml0ZShTdHJpbmdQb29sVGFnKTsKLSAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoaXRlci5m
aXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoYWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggNmZkZjM3MzQyZTAzMGNk
NmVlZGE1ZjcxMGFiOTJlYTkxOTNhNDBkMC4uNWMzMzU5Mzc3MDVlZjIzYzg2ZDY2NzBiYjFjYjkz
ODdhZjM2ODEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAK
QEAgLTE2Myw3ICsxNjMsNyBAQCBOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChOUFAg
bnBwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgRE9NV2luZAogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaXRlciA9IHN0YXRpY1Y4TlBPYmpl
Y3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFzaCwgVjhOUE9iamVjdFZlY3RvcigpKS5maXJzdDsgCisg
ICAgICAgIGl0ZXIgPSBzdGF0aWNWOE5QT2JqZWN0TWFwKCktPnNldCh2OE9iamVjdEhhc2gsIFY4
TlBPYmplY3RWZWN0b3IoKSkuaXRlcmF0b3I7CiAgICAgfQogCiAgICAgVjhOUE9iamVjdCogdjhu
cE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KF9OUE5fQ3JlYXRlT2JqZWN0
KG5wcCwgJlY4TlBPYmplY3RDbGFzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL0lkZW50aWZpZXJSZXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJS
ZXAuY3BwCmluZGV4IGZlZDQ3Y2E1ZWVlODY2NjAxNjI0NThlM2UxMDRmNDYxMmYxZGY4ZmYuLjJh
Y2YxNDE1M2QxZGI5ZTEyYjcyNTU4YTUzODhkOTg2ZmY4YTVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBJZGVudGlmaWVyUmVw
KiBJZGVudGlmaWVyUmVwOjpnZXQoaW50IGludElEKQogICAgICAgICByZXR1cm4gaWRlbnRpZmll
cjsKICAgICB9CiAgICAgCi0gICAgcGFpcjxJbnRJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gaW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7IAotICAgIGlmIChy
ZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsK
KyAgICBJbnRJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gaW50SWRlbnRpZmllck1h
cCgpLmFkZChpbnRJRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAg
IEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKICAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICBpZGVu
dGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICB9CiAgICAgCi0g
ICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgSWRl
bnRpZmllclJlcCo+IFN0cmluZ0lkZW50aWZpZXJNYXA7CkBAIC05MywxNSArOTMsMTUgQEAgSWRl
bnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAg
IHJldHVybiAwOwogICAKICAgICBVU3RyaW5nIHN0cmluZyA9IHN0cmluZ1RvVVN0cmluZyhTdHJp
bmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSkpOwotICAg
IHBhaXI8U3RyaW5nSWRlbnRpZmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0cmlu
Z0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7Ci0gICAgaWYgKHJlc3VsdC5z
ZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7CisgICAgU3Ry
aW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZpZXJNYXAo
KS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKG5hbWUpOwogICAgICAgICAKLSAg
ICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAg
IGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0KICAg
ICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogfQogCiBib29sIElkZW50aWZpZXJSZXA6OmlzVmFsaWQoSWRlbnRp
ZmllclJlcCogaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9O
UF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmlu
ZGV4IDJjYmU5MjNmNWQwMGEyMTJiYTY5MDRhYmJiNjQxMWY5NWUzMDU0MzEuLjgzOTg2YWY1ODNj
NTkwNDJmMWJmNzc3NTEyMDdhODAzNTNhZDEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8Um9v
dE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHJv
b3RPYmplY3QpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkgewogICAgICAgICAg
ICAgcm9vdE9iamVjdC0+YWRkSW52YWxpZGF0aW9uQ2FsbGJhY2soJm1faW52YWxpZGF0aW9uQ2Fs
bGJhY2spOwotICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFkZChyb290T2JqZWN0LCBKU1RvTlBP
YmplY3RNYXAoKSkuZmlyc3Q7CisgICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJvb3RPYmpl
Y3QsIEpTVG9OUE9iamVjdE1hcCgpKS5pdGVyYXRvcjsKICAgICAgICAgfQogCiAgICAgICAgIEFT
U0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgPT0gaXRlci0+c2Vjb25kLmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggYjk4OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNTIxOTA5
N2NlNGRmZDY5Y2NkOGZiYTQ3Mjk5OTI4MGNkY2RkN2RjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyNDcsNyArMTI0
Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwcm9wCiBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVu
dGVkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJRCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEhhc2hTZXQ8aW50PiwgcHJvcGVydHlJRFNldCwgKCkpOwotICAgIGlmICghcHJvcGVydHlJRFNl
dC5hZGQocHJvcGVydHlJRCkuc2Vjb25kKQorICAgIGlmICghcHJvcGVydHlJRFNldC5hZGQocHJv
cGVydHlJRCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HX0VSUk9SKCJX
ZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIs
IGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTM2NzM1YWZi
NmIxNzM0NzE3MDg2N2U3NDg0MTdkN2UzZDY3MmU0Yi4uZGQ5MDRkMzdmYjk1NGU0NGRiYTY1Mzg3
NjczNTgzMTE5OGZhZDNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNl
OjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICB1bnNp
Z25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkg
PDwgNiB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSA8PCA0CiAgICAgICAgICAgICAg
ICAgICAgICAgIHwgKGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSA9PSBUZXh0T3Jp
ZW50YXRpb25VcHJpZ2h0ID8gOCA6IDApIHwgKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsID8gNCA6IDApIHwgKHN5bnRoZXRpY0JvbGQgPyAyIDogMCkgfCAoc3ludGhl
dGljSXRhbGljID8gMSA6IDApOwogCi0gICAgU2ltcGxlRm9udERhdGEqJiBjYWNoZWREYXRhID0g
bV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNpbXBs
ZUZvbnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCku
aXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoY2FjaGVkRGF0YSkKICAgICAgICAgcmV0dXJuIGNh
Y2hlZERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNmQy
MmZkY2NkMGQ1NzlkMDhjNGE2NWMyZTZlNWZmYmJiNWEyNGZhNS4uZTAwMmYyZjhmMDE3MGU5OGNh
NTZkNzFmZTVjZGI5N2JiZWE2MmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZh
Y2VSdWxlKGNvbnN0IENTU0ZvbnRGYWNlUnVsZSogZm9udEZhY2VSdWxlKQogICAgICAgICBpZiAo
ZmFtaWx5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBP
d25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBt
X2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICAg
ICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4gPiYgZmFtaWx5Rm9udEZhY2Vz
ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7
CiAgICAgICAgIGlmICghZmFtaWx5Rm9udEZhY2VzKSB7CiAgICAgICAgICAgICBmYW1pbHlGb250
RmFjZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPik7CiAKQEAg
LTQ4NywxMyArNDg3LDEzIEBAIEZvbnREYXRhKiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnREYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiAgICAgICAgIHJldHVy
biBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBm
YW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRy
PENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUgPSBtX2Zv
bnRzLmFkZChmYW1pbHksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPiA+JiBzZWdtZW50ZWRG
b250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFtaWx5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2VDYWNoZSkKICAgICAgICAgc2VnbWVudGVk
Rm9udEZhY2VDYWNoZSA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NT
U2VnbWVudGVkRm9udEZhY2U+ID4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzayA9
IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAKLSAgICBSZWZQdHI8Q1NTU2VnbWVudGVk
Rm9udEZhY2U+JiBmYWNlID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01hc2ss
IDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFj
ZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0gQ1NTU2VnbWVudGVkRm9u
dEZhY2U6OmNyZWF0ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRG
b250RmFjZS5jcHAKaW5kZXggZTNkOWI3NzAxMzBhMDM1MTBlMDk0NmJkNzVmNTRjMzljOTk3MjAy
NS4uY2Y5ZWM5ZTJlZDJmOWZlZjJiYmQ5NGZmNjVlMGFhZTMyYTM4NDEwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
Rm9udERhdGEqIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGkKICAgICBGb250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRz
TWFzayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAgICAgdW5zaWduZWQgaGFzaEtl
eSA9ICgoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCAoRm9udFRy
YWl0c01hc2tXaWR0aCArIDEpKSB8ICgoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWwgPyAxIDogMCkgPDwgRm9udFRyYWl0c01hc2tXaWR0aCkgfCBkZXNpcmVkVHJhaXRz
TWFzazsKIAotICAgIFNlZ21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFi
bGUuYWRkKGhhc2hLZXksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU2VnbWVudGVkRm9udERhdGEq
JiBmb250RGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlcmF0b3ItPnNl
Y29uZDsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCAzMWE4N2Fm
MGMzYjM0ZjhlNjZmNzQ4ZmExMTZmZGIxN2U0NTQ3ZDMxLi4wNDFkNmM4MjQ1MjNkMmYyOWI1NjJm
YjFjMjQ0ZjUyNDBjMDZjMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmNwcApAQCAtMTAwNCw3ICsxMDA0LDcgQEAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAgICAgICBJdGVy
YXRvciBlbmQgPSBwYXJlbnRNYXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBw
YXJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDb3VudGVy
RGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0
aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRp
cmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlcmF0
b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpIHsK
ICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQgPSBpdC0+c2Vjb25kLm1fcmVzZXQ7
CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSBpdC0+c2Vjb25kLm1f
cmVzZXRWYWx1ZTsKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAg
QXRvbWljU3RyaW5nIGlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHBhaXItPmZpcnN0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSktPmdldElu
dFZhbHVlKCk7Ci0gICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1h
cC5hZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0LT5zZWNv
bmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQo
aWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNvbmQ7
CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAg
ICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBkaXJlY3Rp
dmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCmluZGV4IGVjMmY5NzIwNjUyYmMzODA4YWI1YTBhMjA2YzVkOGIwNWRlMWYzODYuLmU1
MjJhM2NjYjkyMGQxOTZiODIxZWU1MWY5MmJlNzYzMWFhZDY0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQ5NiwxMCArNDk2LDEwIEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNv
bnN0IFZlY3RvcjxSCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29wZShjc3NTaGVldCk7CiAgICAgICAgIGlm
IChzY29wZSkgewotICAgICAgICAgICAgcGFpcjxTY29wZWRSdWxlU2V0TWFwOjppdGVyYXRvciwg
Ym9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxscHRy
KTsKLSAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgIGFk
ZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7Ci0gICAgICAg
ICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC0+YWRkUnVsZXNGcm9tU2hlZXQoY3NzU2hlZXQs
ICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgICAgICAgICAgU2NvcGVkUnVsZVNldE1hcDo6
QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmFkZChzY29wZSwgbnVs
bHB0cik7CisgICAgICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgp
KTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5hZGRSdWxlc0Zyb21T
aGVldChjc3NTaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMzgwLDcgKzIzODAsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAs
IGNvbnN0IFJ1bGVEYQogewogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm47Ci0gICAgT3du
UHRyPFZlY3RvcjxSdWxlRGF0YT4gPiYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0cikuZmly
c3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5h
ZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcnVsZXMpCiAgICAg
ICAgIHJ1bGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSdWxlRGF0YT4pOwogICAgIHJ1bGVzLT5h
cHBlbmQocnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBjNDZj
NzA0N2M1MDBlNGIyODNmM2Q3ZWM1ODRiZDliOGU5MzQ2ZWVhLi4wNWJhNTQ5NTAyYWZiODc2Nzdm
MjUzMTJiZjEzYWI2NDk3NjlhNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApA
QCAtNTUsMTAgKzU1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVudCkKICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKIAogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPElkZW50aWZpZXJWYWx1ZUNh
Y2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2lkZW50aWZpZXJWYWx1ZUNhY2hlLmFkZChp
ZGVudCwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50cnku
Zmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50
KTsKLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJZGVudGlmaWVyVmFsdWVD
YWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gbV9pZGVudGlmaWVyVmFsdWVDYWNoZS5hZGQoaWRlbnQs
IGR1bW15VmFsdWUpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5p
dGVyYXRvci0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRl
bnQpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWdu
ZWQgcmdiVmFsdWUpCkBAIC03OCwxMCArNzgsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVlKQog
ICAgICAgICBtX2NvbG9yVmFsdWVDYWNoZS5jbGVhcigpOwogCiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8Q29sb3JWYWx1ZUNhY2hlOjppdGVyYXRv
ciwgYm9vbD4gZW50cnkgPSBtX2NvbG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1bW15VmFs
dWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOwotICAgIHJldHVybiBl
bnRyeS5maXJzdC0+c2Vjb25kOworICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0IGVudHJ5
ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKKyAgICBpZiAo
ZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7CisgICAgcmV0dXJuIGVudHJ5Lml0
ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzIHR5cGUpCkBAIC0xMTcsMTUgKzExNywxNSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0
aQogICAgIH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAg
ICBwYWlyPEludGVnZXJWYWx1ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBjYWNoZS0+
YWRkKGludFZhbHVlLCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAg
ICBlbnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
dHlwZSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSW50ZWdlclZhbHVl
Q2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFsdWUsIGR1bW15VmFsdWUp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vj
b25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgcmV0dXJu
IGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZSkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiB2YWx1ZSA9IG1fZm9u
dEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5hbWUsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hl
LmFkZChmYW1pbHlOYW1lLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTM4LDcg
KzEzOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZv
bnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VWYWx1
ZUNhY2hlLnNpemUoKSA+IG1heGltdW1Gb250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9mb250
RmFjZVZhbHVlQ2FjaGUuY2xlYXIoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1
ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4mIHZhbHVlID0gbV9mb250RmFjZVZhbHVlQ2FjaGUuYWRk
KHN0cmluZywgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICB2
YWx1ZSA9IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKHN0cmluZywgY29udGV4dFN0eWxl
U2hlZXQpOwogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFk
aW9CdXR0b25zLmNwcAppbmRleCA0NzBkYTJhZDVjNzNiMTc5MmFlNjIzZDk0ODI2OGI4ZDY1NWU2
YzU4Li5lNjcyMzI5YWY4ZGUzNzhiZWZkZmMxNGY4YWNiZDBmMmVjMGM3NDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgUmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBi
dXR0b24pCiB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBidXR0
b24pCiB7CiAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoIW1f
bWVtYmVycy5hZGQoYnV0dG9uKS5zZWNvbmQpCisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1dHRv
bikuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgZ3JvdXBXYXNWYWxpZCA9
IGlzVmFsaWQoKTsKICAgICBpZiAoYnV0dG9uLT5yZXF1aXJlZCgpKQpAQCAtMTg1LDcgKzE4NSw3
IEBAIHZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQogICAgICAgICBtX25hbWVUb0dy
b3VwTWFwID0gYWRvcHRQdHIobmV3IE5hbWVUb0dyb3VwTWFwKTsKIAotICAgIE93blB0cjxSYWRp
b0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFt
ZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5maXJzdC0+c2Vjb25k
OworICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFw
LT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3Vw
PigpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JvdXApCiAgICAgICAgIGdyb3VwID0g
UmFkaW9CdXR0b25Hcm91cDo6Y3JlYXRlKCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBjYmFh
YTRlZmVjMDE3YjM2MjJiNjg0OTRjZGU0ZjE5MzFjY2FiZDhmLi5jNWNiM2FkOWY2ZWFiNzhkODll
NWQ2N2VhOWM0MzUyMzIyOTdlMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwCkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBDaGlsZExpc3RNdXRh
dGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6d2lsbFJlbW92ZUNoaWxkKE5v
ZGUqIHQKIAogdm9pZCBDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlv
blJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKIHsKLSAgICBwYWly
PFNjb3BpbmdMZXZlbE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fc2NvcGluZ0xldmVs
cy5hZGQodGFyZ2V0LCAxKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgKyso
cmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIFNjb3BpbmdMZXZlbE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fc2NvcGluZ0xldmVscy5hZGQodGFyZ2V0LCAxKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KSB7CisgICAgICAgICsrKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNTQ5MGRjY2Q1
ZWVhY2Q2NGNiMWQ5ZDdmNDdkOGFlYTk0YjY5OWUxYy4uZWFiZDg4NjJjZmMzYjBiNzYyZWVhM2Q0
MzBmMDk4ZTQ1NTcwNzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTE5LDcgKzQ1
MTksNyBAQCBIVE1MQWxsQ29sbGVjdGlvbiogRG9jdW1lbnQ6OmFsbCgpCiAKIEhUTUxDb2xsZWN0
aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX3dpbmRv
d05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cikuZmlyc3QtPnNl
Y29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fd2lu
ZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9IEhU
TUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwog
ICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpOwpAQCAtNDUyNyw3ICs0NTI3LDcgQEAgSFRNTENv
bGxlY3Rpb24qIERvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+
JiBjb2xsZWN0aW9uID0gbV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmlt
cGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0
aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFt
ZS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjb2xsZWN0aW9u
KQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVhdGUodGhpcywg
RG9jdW1lbnROYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQoKTsK
QEAgLTQ5MjAsNyArNDkyMCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIERvY3VtZW50Ojpn
ZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QKIAogSFRNTENhbnZh
c0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52
YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8SFRNTENh
bnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCku
aXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIGVsZW1lbnQgPSBI
VE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBlbGVtZW50LmdldCgp
OwpAQCAtNTcyMywxMiArNTcyMywxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6
Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBlTmFtZXMpCiAgICAgLy8gSW4gdGhpcyBjYXNlIHdl
IG5lZWQgdG8gY3JlYXRlIGFuIHVuaXF1ZSBzdHJpbmcgaWRlbnRpZmllciB0byBtYXAgc3VjaCBy
ZXF1ZXN0IGluIHRoZSBjYWNoZS4KICAgICBTdHJpbmcgbG9jYWxUeXBlTmFtZXMgPSB0eXBlTmFt
ZXMuaXNOdWxsKCkgPyBTdHJpbmcoImh0dHA6Ly93ZWJraXQub3JnL21pY3JvZGF0YS91bmRlZmlu
ZWRJdGVtVHlwZSIpIDogdHlwZU5hbWVzOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6
TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG5vZGVMaXN0
cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7Ci0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4o
cmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVEYXRhOjpNaWNyb0RhdGFJ
dGVtTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbm9kZUxpc3RzLT5tX21pY3JvRGF0YUl0
ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPE1pY3JvRGF0YUl0ZW1MaXN0PiBsaXN0ID0gTWlj
cm9EYXRhSXRlbUxpc3Q6OmNyZWF0ZSh0aGlzLCB0eXBlTmFtZXMpOwotICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxp
c3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDViODk5YjNmNTc4YTI3NDM5ODI0ODU5
OGI5ZDI5YWQ5ODhmMDAzNmUuLjU0OTQwODI1MjhiMjkzMzVlMGM1Mzc3ZTcwYjM0ZDc0ZDU1MjI1
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIGJvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChldmVu
dC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZl
bnQpLnNlY29uZDsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2ZW50
KS5pc05ld0VudHJ5OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8g
SXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KICAgICAKICAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFz
c1JlZlB0cjxOb2RlPiB0YXJnZXQsIFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQoKSkuc2Vjb25k
KQorICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQo
KSkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsRXZlbnQtPnNldFRh
cmdldCh0YXJnZXQpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVl
OjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBmb3Ig
d2hlcmUgd2Ugc2hvdWxkIHN0b3AuCiAgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250YWlu
cygwKSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5zZWNvbmQ7
CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5pc05ld0VudHJ5Owog
ICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBo
YXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KIAogICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50
UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJl
ZE1hcC5jcHAKaW5kZXggYmNiMjNiNDk2MmY2NDY2YmI2MWI4YWViYWZhNDA1ZmVlODhlOTMwMy4u
MDgyYWEwNzQwYTcxY2NkZjUwZTFkNDJkMjNkMzE3ZTYzYWYyZjRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAgLTY5LDE0ICs2OSwxNCBAQCB2b2lkIERv
Y3VtZW50T3JkZXJlZE1hcDo6YWRkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxl
bWVudCkKICAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGtleSkpIHsKICAgICAg
ICAgLy8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBhbHJlYWR5IGluIG1fZHVwbGljYXRlQ291
bnRzLCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCiAgICAgICAgIC8vIGFsc28gbm90IGFscmVhZHkg
aW4gbV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRoYXQgYWRkIHN1Y2NlZWRzLCB3ZSdyZSBk
b25lLgotICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGVsZW1lbnQpOwotICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkKKyAgICAg
ICAgTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgZWxlbWVudCk7Cisg
ICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAvLyBUaGUgYWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2FjaGVk
IGluIG1fbWFwLgogICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0
aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcAogICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkg
c28gZ2V0IHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgotICAgICAgICBt
X21hcC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGFkZFJl
c3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRo
aXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAKaW5kZXggNzc0ZTY2NTc0YTZiY2MxZGVjZmE5NjY5NjNkYmE5NjBhYTk5YzQ0OS4uYzFm
ZDRkN2M5NTdhNjRiZmY3ODhmOTAxZTYxZGUwMWNhMDkyMjc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTM0LDExICsxMzQsMTEgQEAgYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW4KICAgICB9CiAKICAgICBpZiAobV9oYXNoTWFwKSB7Ci0gICAgICAgIHBhaXI8
RXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2hhc2hNYXAt
PmFkZChldmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IEV2ZW50TGlzdGVu
ZXJWZWN0b3IpOworICAgICAgICBFdmVudExpc3RlbmVySGFzaE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1faGFzaE1hcC0+YWRkKGV2ZW50VHlwZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRv
cHRQdHIobmV3IEV2ZW50TGlzdGVuZXJWZWN0b3IpOwogCi0gICAgICAgIHJldHVybiBhZGRMaXN0
ZW5lclRvVmVjdG9yKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CisgICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgaWYg
KCFtX3NpbmdsZUV2ZW50TGlzdGVuZXJWZWN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0ODBl
NWJiN2Y0ZWJmNzA5MDFlZTEyOGQwN2M4NTcwNTBkODQwNDc0Li4zMzZlMWJmN2FiMjRmM2Q0ODgw
YmExNTc2ZGZkZjIzN2ViY2EyMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUsOSArMTg1LDkg
QEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAKICAgICAgICAgICAgICAgICAvLyBUYWcg
c3RhdHMKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIHNpemVf
dD46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+dGFn
TmFtZSgpLCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kKys7CisgICAgICAgICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIHNpemVfdD46OkFkZFJlc3VsdCByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQo
ZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCsrOwog
CiAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRh
ID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVuZ3RoKCk7CkBAIC0xNjEyLDEyICsxNjEyLDEyIEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKQogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0b20g
PSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0
cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0
PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVM
aXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2Rl
TGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFn
Tm9kZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxUYWdOb2Rl
TGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywgc3RhckF0b20sIGxvY2FsTmFt
ZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOyAgIAogfQogCkBAIC0xNjM1LDM2ICsxNjM1LDM2IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3Bh
Y2VVCiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRvbSA9IG5hbWU7CiAKLSAgICBwYWly
PE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZU5TOjpBZGRSZXN1
bHQgcmVzdWx0CiAgICAgICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRo
aXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9j
YWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOwotICAgIGlmICghcmVzdWx0LnNl
Y29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4g
UGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAg
UmVmUHRyPFRhZ05vZGVMaXN0PiBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBuYW1l
c3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZUF0
b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgp
OwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5TmFtZShjb25z
dCBTdHJpbmcmIGVsZW1lbnROYW1lKQogewotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6Ok5h
bWVOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZW5zdXJlUmFyZURhdGEo
KS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX25hbWVOb2RlTGlzdENhY2hlLmFkZChlbGVtZW50
TmFtZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVE
YXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRh
KCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxlbWVu
dE5hbWUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQ
YXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQ
dHI8TmFtZU5vZGVMaXN0PiBsaXN0ID0gTmFtZU5vZGVMaXN0OjpjcmVhdGUodGhpcywgZWxlbWVu
dE5hbWUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVE
YXRhOjpDbGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBOb2Rl
TGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0CiAgICAg
ICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNzTm9k
ZUxpc3RDYWNoZS5hZGQoY2xhc3NOYW1lcywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQp
OworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8Q2xhc3NO
b2RlTGlzdD4gbGlzdCA9IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBjbGFzc05hbWVzKTsK
LSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0K
IApAQCAtMjU5MSw5ICsyNTkxLDkgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNlcnZl
cnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogICAgICAgICAg
ICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gcmVnaXN0cnkt
PmF0KGkpLmdldCgpOwogICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxkUmVjZWl2
ZU11dGF0aW9uRnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAgICAgICAg
ICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucyA9IHJlZ2lz
dHJhdGlvbi0+ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNoTWFw
PFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2Jz
ZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IGRlbGl2
ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQgPSBv
YnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CiAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMjYwNCw5ICsyNjA0LDkgQEAgdm9pZCBOb2RlOjpjb2xs
ZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIqLAogICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0
cmF0aW9uID0gKml0ZXI7CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRSZWNl
aXZlTXV0YXRpb25Gcm9tKHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAgICAg
ICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVn
aXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hN
YXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
Pjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5v
YnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gZGVs
aXZlcnlPcHRpb25zOworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNl
cnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3VsdCA9
IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMp
OworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNw
cAppbmRleCBhNzQyNjI5NWVmMDY0ZWJlOWMwZmFkZWYwZjY3MDFkNTE2NThkYTNlLi5lMDg1NTA3
MGE3Y2IzMjUzNGNjYmY4YWI4ZDA1MjY2N2RhMzE5ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdChj
b25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0b21pY1N0cmluZyYgbCwgY29uc3QgQXRvCiAg
ICAgaWYgKCFnTmFtZUNhY2hlKQogICAgICAgICBnTmFtZUNhY2hlID0gbmV3IFFOYW1lU2V0Owog
ICAgIFF1YWxpZmllZE5hbWVDb21wb25lbnRzIGNvbXBvbmVudHMgPSB7IHAuaW1wbCgpLCBsLmlt
cGwoKSwgbi5pc0VtcHR5KCkgPyBudWxsQXRvbS5pbXBsKCkgOiBuLmltcGwoKSB9OwotICAgIHBh
aXI8UU5hbWVTZXQ6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnTmFtZUNhY2hlLT5hZGQ8
UXVhbGlmaWVkTmFtZUNvbXBvbmVudHMsIFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I+KGNvbXBv
bmVudHMpOwotICAgIG1faW1wbCA9ICphZGRSZXN1bHQuZmlyc3Q7ICAgIAotICAgIGlmICghYWRk
UmVzdWx0LnNlY29uZCkKKyAgICBRTmFtZVNldDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdOYW1l
Q2FjaGUtPmFkZDxRdWFsaWZpZWROYW1lQ29tcG9uZW50cywgUU5hbWVDb21wb25lbnRzVHJhbnNs
YXRvcj4oY29tcG9uZW50cyk7CisgICAgbV9pbXBsID0gKmFkZFJlc3VsdC5pdGVyYXRvcjsKKyAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBtX2ltcGwtPnJlZigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggMDM1YzRhMjFhNzJj
OWNkODQwZTBiMjk2MmNlNjk3NmFkODU2YmNiZS4uOWNjZTdkOTViNWUxMDQ0M2MwM2VkYTViNzJm
MTEyYzU3MDUyZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0cmlu
Z0RhdGEoKQogCiBQYXNzUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0U3Ry
aW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogewotICAgIFNwYWNl
U3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5m
aXJzdC0+c2Vjb25kOworICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERh
dGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZGF0YSkg
ewogICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZyk7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cAppbmRleCA1NzYxZjUwNmU5MDEwOTE3MzY0NmMxYzkzN2M1MTA3NjNiMWFjMjYzLi4yMjhhYTg2
ZTM1YWE2MzEzODgwOGY5MGVjYzk2OWMyNmRhY2M0MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojp1cGRh
dGVBdHRyaWJ1dGVTdHlsZSgpCiAKICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTo6aXRl
cmF0b3IgY2FjaGVJdGVyYXRvcjsKICAgICBpZiAoY2FjaGVIYXNoKSB7Ci0gICAgICAgIGNhY2hl
SXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gsIG51
bGxwdHIpLmZpcnN0OworICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0cmli
dXRlQ2FjaGUoKS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKICAgICAgICAgaWYg
KGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQtPmtleSAhPSBj
YWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7CiAgICAgfSBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IGQxMWZlZTEyMTgxNWM3Y2ZjN2M5OWQw
MWNlNTQ1NTg3YmUzY2IxYjYuLmMzYTcxNTNjYWU0NWFkNjAxYTg1Yzg1MDk5ZTNmMTUxODk5NzI3
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0zNTksNyArMzU5
LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246OnRhZ3MoY29uc3QgU3Ry
aW5nJiBuYW1lKQogCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjphcHBlbmQoTm9kZUNhY2hlTWFwJiBt
YXAsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIE93
blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1hcC5hZGQoa2V5LmltcGwoKSwgbnVs
bHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0
b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
aWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RWxlbWVu
dCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjVkY2EzM2NlNzA0ODhkYjVhODNjZDlm
OTNlZDVjZDFmYThhOWQ2Ny4uZDdmY2I5YWFjMDhlODg1MzY4NmNmZGRiNTFmYTFlMTBkMjk5NDlj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAg
LTIzMywxMiArMjMzLDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3du
UHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0CiAgICAgRGlmZlRhYmxl
IG9sZFRhYmxlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdMaXN0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBuZXdUYWJsZS5hZGQobmV3
TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgRGlmZlRh
YmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZlY3Rv
cjxzaXplX3Q+KCkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsKICAg
ICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZExpc3Quc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ld
LT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0OworICAgICAgICBEaWZmVGFibGU6Oml0
ZXJhdG9yIGl0ID0gb2xkVGFibGUuYWRkKG9sZExpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNpemVf
dD4oKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
ZGNhODFjYWNhYzZiMzg3ZGVlYTZmOTM5N2MwYWNlZTI0MmY2MDY2OS4uMDY0Yjg2MmM5MGI3NTVl
OWY4M2IyYTBmN2NhODFlNDFmMTU0MTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBpbmxpbmUgdm9p
ZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkKICAgICBkb3Vi
bGUgbWF0Y2hUaW1lTXMgPSBXVEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0
YS5zdGFydFRpbWU7CiAgICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1zOwog
Ci0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMobV9j
dXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7Ci0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnRvdGFs
VGltZSArPSBtYXRjaFRpbWVNczsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuaGl0cyAr
PSAxOworICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9ydWxl
TWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJlbnRN
YXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLnRvdGFs
VGltZSArPSBtYXRjaFRpbWVNczsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuaGl0
cyArPSAxOwogICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kLm1hdGNoZXMgKz0gMTsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
Lm1hdGNoZXMgKz0gMTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGIzNTJiZDhhNzE1ZTFlMTkxMmM4OTBjZWZkYzhi
NDA2NGRlMjdmNDQuLjBlY2ZkMDk3Mzk4MDNhOWNlNTE4NmU0MGUzNzQwZTIwYzM4NzJlZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
ODgxLDcgKzg4MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltCiAgICAgfQogCiAgICAgKnNl
YXJjaElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7Ci0gICAgU2Vh
cmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2Vh
cmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5maXJzdDsKKyAgICBTZWFyY2hSZXN1bHRz
OjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJZCwgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOwogCiAgICAgZm9yIChMaXN0SGFzaFNldDxO
b2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3Vs
dENvbGxlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBwZW5k
KCppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAKaW5kZXggZjJhYWI0YjdmNGY1NzFlY2ZlZGQ5MzI4YTA0NzgxNTkwZDdhY2Jh
OS4uOTI0YmUzODQyOWY3NDA5NjIzYjI2Nzc5MmJhZDA0NTYzM2RjODhmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MzMzLDcgKzMzMyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAKICAgICBCcmVha3BvaW50
SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJCcmVh
a3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzLmZpbmQoYnJlYWtwb2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRz
SXRlcmF0b3IgPT0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5lbmQo
KSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9p
bnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3RvcjxT
dHJpbmc+KCkpLmZpcnN0OworICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRv
ciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFrcG9p
bnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuaXRlcmF0b3I7CiAgICAgZGVidWdTZXJ2ZXJCcmVha3Bv
aW50SWRzSXRlcmF0b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQpOwog
CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0g
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBiM2Y2MTcxOTNiZjQ0OWIyZTYzZTlm
MzJiNWE3MzBkYjYwZDgyNDI2Li5jOTFhZDgyZTY1YmRjMGYxZjlmZTE3NzQ2MzA1YzlhM2RmZWI5
ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0y
ODIsMjEgKzI4MiwyMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFN0cmluZyhj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9kYXRh
LnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVl
KS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5saW5l
IHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAg
ICBpZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0
KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsK
IH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAgIEFTU0VSVCh2
YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBpZiAo
bV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5hcHBl
bmQobmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZTYyMjljNDRkNTQ2MDBjZjU0YTZj
YjU0Y2EzNmJhMzgyMWVkZTIwNi4uNGU0MjkzOGJiNWQ1N2Q2MTJiZGYzNTBjZjE5MzQwNDAyNDI3
OWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwNjIsMTAgKzEwNjIsMTAgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCB0
eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHBhaXI8RW50cnlNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUpOwor
ICAgIEVudHJ5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQodXJs
LCB0eXBlKTsKICAgICAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kIHw9IHR5cGU7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gdHlwZTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggMTZhN2NjZjJkMzVmNjRlZDRiMGU1NzMyMTBhMzY3NTgzNTc0NGRmMS4uNWQxMDNiMmZm
N2I0Y2JhNTRlMDM3YmE2Yzg3OTYyMzA0ZDA1ZWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC0xMzQsMTEgKzEzNCwxMSBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogewogICAgIEFTU0VS
VCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCi0gICAgc3RkOjpwYWly
PENhY2hlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NhY2hlc0luTWVtb3J5
LmFkZChtYW5pZmVzdFVSTCwgMCk7CisgICAgQ2FjaGVHcm91cE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0VVJMLCAwKTsKICAgICAKLSAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAgIC8vIExv
b2sgdXAgdGhlIGdyb3VwIGluIHRoZSBkYXRhYmFzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNh
Y2hlR3JvdXAoY29uc3QgS1VSCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZCh1cmxIb3N0SGFz
aChtYW5pZmVzdFVSTCkpOwogICAgIH0KICAgICAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9
IGdyb3VwOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gZ3JvdXA7CiAgICAgCiAgICAg
cmV0dXJuIGdyb3VwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGE3
MWU4NTE1NDZmYzIwYWI4N2NhNzcyMDU1NjE3NGZjNjY2MmVlN2MuLjI5MzY0Y2Q0MTNmYWRmOTQ5
ZGNlNTBkNTYyZDljMzk4ODRhMzdkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTM1MTYsNyArMzUxNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIEVuc3VyZSB0
aGlzIHRhcmdldCdzIHRvdWNoIGxpc3QgZXhpc3RzLCBldmVuIGlmIGl0IGVuZHMgdXAgZW1wdHks
IHNvIGl0IGNhbiBhbHdheXMgYmUgcGFzc2VkIHRvIFRvdWNoRXZlbnQ6OkNyZWF0ZSBiZWxvdy4K
ICAgICAgICAgVGFyZ2V0VG91Y2hlc01hcDo6aXRlcmF0b3IgdGFyZ2V0VG91Y2hlc0l0ZXJhdG9y
ID0gdG91Y2hlc0J5VGFyZ2V0LmZpbmQodG91Y2hUYXJnZXQuZ2V0KCkpOwogICAgICAgICBpZiAo
dGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID09IHRvdWNoZXNCeVRhcmdldC5lbmQoKSkKLSAgICAgICAg
ICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5zZXQodG91Y2hUYXJn
ZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLmZpcnN0OworICAgICAgICAgICAgdGFyZ2V0
VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0b3VjaFRhcmdldC5nZXQoKSwg
VG91Y2hMaXN0OjpjcmVhdGUoKSkuaXRlcmF0b3I7CiAKICAgICAgICAgLy8gdG91Y2hlcyBhbmQg
dGFyZ2V0VG91Y2hlcyBzaG91bGQgb25seSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRvdWNo
ZXMgc3RpbGwgb24gdGhlIHNjcmVlbiwgc28gaWYgdGhpcyBwb2ludCBpcwogICAgICAgICAvLyBy
ZWxlYXNlZCBvciBjYW5jZWxsZWQgaXQgd2lsbCBvbmx5IGFwcGVhciBpbiB0aGUgY2hhbmdlZFRv
dWNoZXMgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA3MzFlMWZjMDc5YjVm
ZTlmYjM5MDBmYjU3YmYzNmUxZDk2NmE4ZmIyLi5mOTM5YzliZmQyYTM3NjE5ZjY1NzdiZjdkMjVm
ZGYxNzJiM2EwNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC05MCwxNSArOTAs
MTUgQEAgUGFnZUdyb3VwKiBQYWdlR3JvdXA6OnBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAgICAgIHBhZ2VHcm91cHMgPSBuZXcgUGFn
ZUdyb3VwTWFwOwogCi0gICAgcGFpcjxQYWdlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKKyAgICBQYWdlR3JvdXBNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKIAotICAgIGlm
IChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQp
OwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBQYWdlR3JvdXAoZ3JvdXBOYW1l
KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbmV3
IFBhZ2VHcm91cChncm91cE5hbWUpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmlyc3Qt
PnNlY29uZCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFTU0VSVChy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQpAQCAtMTk3LDcg
KzE5Nyw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoTGlua0hhc2gg
aGFzaCkKIHsKICAgICBBU1NFUlQoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwogI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkKLSAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLnNl
Y29uZCkKKyAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLmlzTmV3RW50cnkp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQo
dGhpcywgaGFzaCk7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJT
Y3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmMK
ICAgICBPd25QdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2VyU2Ny
aXB0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwgaW5q
ZWN0ZWRGcmFtZXMpKTsKICAgICBpZiAoIW1fdXNlclNjcmlwdHMpCiAgICAgICAgIG1fdXNlclNj
cmlwdHMgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdE1hcCk7Ci0gICAgT3duUHRyPFVzZXJTY3Jp
cHRWZWN0b3I+JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVs
bHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNjcmlw
dHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNjcmlwdHNJbldvcmxk
ID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlwdHNJbldvcmxkLT5h
cHBlbmQodXNlclNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgUGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
Y29uc3QgU3RyaW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVl
dCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBi
bGFja2xpc3QsIGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICghbV91c2VyU3R5bGVT
aGVldHMpCiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJTdHls
ZVNoZWV0TWFwKTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNoZWV0
c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5maXJzdC0+
c2Vjb25kOworICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5X
b3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgaWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCiAgICAgICAgIHN0eWxlU2hlZXRz
SW5Xb3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldFZlY3Rvcik7CiAgICAgc3R5bGVT
aGVldHNJbldvcmxkLT5hcHBlbmQodXNlclN0eWxlU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggOTMxZjI2MDNmZDRmMjIxYjRiNWRlM2Fj
ZGMzN2Q5NzZkMTNkZjIyNy4uYzJhNWFiMTE0MzVlZjZkYjA1NzY4Yzc2Y2EwMzU3YjU2MjU4MzMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTEzMSwxMSArMTMx
LDExIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0
cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBwYWlyPE9y
aWdpbkFjY2Vzc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgp
LmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAg
ICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPcmlnaW5BY2Nlc3NXaGl0
ZUxpc3QpOworICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFj
Y2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKIAotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlz
dCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAgIGxpc3QtPmFwcGVu
ZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFp
biwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dT
dWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggZGQwNTQ2MThkMGY4
MGE4MDI2MjY4NWQ4YjBmNGE5OTdiYjEzYjUzOC4uZGE2M2FmYTY0ZGNjNTEyYjQ1N2IxYTBjNTZh
OTkyYTY3ZGE0OWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApA
QCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxp
c3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICAg
ICAgcmVzcG9uZGluZ05vZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250
aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9u
ZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQgbGF0ZXIuCiAgICAgICAgICAgICAgICAgZm9yICh2aXNp
dGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2
aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcGFpcjxIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgIEhh
c2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJz
U2V0LmFkZCh2aXNpdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRleCA0YjgyM2IxMmI3OGI2NWRjYzc1
YmMxMTE3NjI2ODE0MDY2ZjI4NWY5Li40YmM3YzJlNjA3ZWFiM2UwYjQ3MzYwYTYyMjZlMWEyN2E1
MjA4YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9w
ZXJ0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3Bl
cnR5TGlzdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBs
YW46OndyaXRlSW50ZWdlcihpbnQgaW50ZWdlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgbV9pbnRlZ2VyWmVyb09iamVjdFJlZmVyZW5jZSA9IG1fY3VycmVudE9iamVjdFJlZmVyZW5j
ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1faW50ZWdlcnMuYWRkKGludGVnZXIsIG1f
Y3VycmVudE9iamVjdFJlZmVyZW5jZSkuc2Vjb25kKQorICAgICAgICBpZiAoIW1faW50ZWdlcnMu
YWRkKGludGVnZXIsIG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgKyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7CkBA
IC0yMTQsNyArMjE0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVn
ZXIoaW50IGludGVnZXIpCiB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgICsrbV9jdXJyZW50QWdncmVnYXRlU2l6ZTsK
LSAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2Up
LnNlY29uZCkKKyAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RS
ZWZlcmVuY2UpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKICAgICArK21fY3VycmVudE9i
amVjdFJlZmVyZW5jZTsKICAgICB3cml0ZVN0cmluZ09iamVjdChzdHJpbmcpOwpAQCAtMjI0LDEy
ICsyMjQsMTIgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXJBcnJh
eShjb25zdCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplX3Qgc2F2ZWRB
Z2dyZWdhdGVTaXplID0gKyttX2N1cnJlbnRBZ2dyZWdhdGVTaXplOwogICAgIEFTU0VSVChzaXpl
KTsKLSAgICBwYWlyPEludGVnZXJBcnJheU1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9
IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJzLCBzaXplKSwgMCk7Ci0g
ICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEludGVnZXJBcnJheU1hcDo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJzLCBz
aXplKSwgMCk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3cml0ZUlu
dGVnZXIoaW50ZWdlcnNbaV0pOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbV9jdXJy
ZW50T2JqZWN0UmVmZXJlbmNlKys7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBt
X2N1cnJlbnRPYmplY3RSZWZlcmVuY2UrKzsKICAgICB3cml0ZUFycmF5T2JqZWN0KHNpemUpOwog
ICAgIG1fY3VycmVudEFnZ3JlZ2F0ZVNpemUgPSBzYXZlZEFnZ3JlZ2F0ZVNpemU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
VGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcAppbmRleCAxYjVhNzMxOWU0MmQ5ZGYxNGJkMjU5NTExMzE5MTYyZTg3MTVj
MTc1Li5kNTE3YWFhN2I0MDI0NDg5MzJkZDQyYmY5ZGFiNDBkMTAyYThkMmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJUaWxlci5jcHAKQEAgLTQyOCwxOCArNDI4LDE4IEBAIHZvaWQgTGF5ZXJUaWxlcjo6cHJvY2Vz
c1RleHR1cmVKb2IoY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpvYnNN
CiB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRleCwgY29u
c3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpvYnNNYXApCiB7CiAgICAgLy8g
SGFzaE1hcDo6YWRkIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaXRlcmF0b3IgZXZlbiB0aGUga2V5
IGFscmVhZHkgZXhpc3RzLgotICAgIHBhaXI8VGlsZUpvYnNNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSB0aWxlSm9ic01hcC5hZGQoaW5kZXgsICZqb2IpOworICAgIFRpbGVKb2JzTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9iKTsKIAogICAgIC8v
IFN1Y2Nlc3NmdWxseSBhZGRlZCB0aGUgbmV3IGpvYi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCkK
KyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElu
IHRoaXMgY2FzZSB3ZSBsZWF2ZSB0aGUgcHJldmlvdXMgam9iLgotICAgIGlmIChqb2IubV90eXBl
ID09IFRleHR1cmVKb2I6OkRpcnR5Q29udGVudHMgJiYgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPm1f
dHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAgaWYgKGpvYi5tX3R5cGUg
PT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+
bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9ICZqb2I7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSAmam9iOwogfQogCiB2
b2lkIExheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29uc3QgVGV4
dHVyZUpvYiYgam9iLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IGY2Y2NiOTVkN2U3MTBhM2MxM2Y2MWYyMjAzNjc4MGViZWI2Nzc1YjMuLjFjMDFiNjljODIyZjE0
MmIzMzY5YjU5NTc3MjFhNzQyMWIzZTI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQ4OCwxNiAr
MjQ4OCwxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpm
aW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbAogICAgIC8vIEFkZCB3aXRoIGEgZHVt
bXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uLCBh
bmQgYSBib29sZWFuIHRoYXQgdGVsbHMKICAgICAvLyB1cyB3aGV0aGVyIHRoZXJlJ3MgYW4gaXRl
bSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1cHMuCiAgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1hcDo6aXRlcmF0b3Is
IGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKLSAgICBpZiAo
IWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICBMYXllck1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgIC8vIFZhbHVlIHdhcyBub3QgYWRkZWQsIHNvIGl0IGV4aXN0cyBhbHJl
YWR5LgotICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgp
OworICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3VyY2VM
YXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1bHRMYXllci0+
c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9uZUlEWzBV
XSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAgICAgIGFkZFJl
c3VsdC5maXJzdC0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CisgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdExh
eWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ2FjaGUubW0KaW5kZXggZDkzMmMxZjcyMzEyZTBlOGM4ODk3NDdjZmJhMTliZjdlMmE1ZDUw
Zi4uMDk3ZGZiZmM2YzA1YjU3ZmJlNGJkMjc1OTVlODViYzA1MGM5YTdhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCkBA
IC0zNjQsNyArMzY0LDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAgICAg
ICAgICAgICBUaWxlSW5kZXggdGlsZUluZGV4KHgsIHkpOwogCiAgICAgICAgICAgICBJbnRSZWN0
IHRpbGVSZWN0ID0gcmVjdEZvclRpbGVJbmRleCh0aWxlSW5kZXgpOwotICAgICAgICAgICAgUmV0
YWluUHRyPFdlYlRpbGVMYXllcj4mIHRpbGVMYXllciA9IG1fdGlsZXMuYWRkKHRpbGVJbmRleCwg
MCkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+JiB0
aWxlTGF5ZXIgPSBtX3RpbGVzLmFkZCh0aWxlSW5kZXgsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgICAgICBpZiAoIXRpbGVMYXllcikgewogICAgICAgICAgICAgICAgIHRpbGVMYXllciA9
IGNyZWF0ZVRpbGVMYXllcih0aWxlUmVjdCk7CiAgICAgICAgICAgICAgICAgW21fdGlsZUNvbnRh
aW5lckxheWVyLmdldCgpIGFkZFN1YmxheWVyOnRpbGVMYXllci5nZXQoKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1
c2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJD
aGFuZ2VzRmx1c2hlci5jcHAKaW5kZXggMDBjNjMwODBkZmM3N2U0YjhjNDJiMTZlNmRhNjgwOTk5
OTE3N2RhOC4uYjRmZWFlZTY4MmQ4YzQ0NTlhODJiZmE2ZGQ5ZGVmNjk2NmEzYWIzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcApAQCAtNDksNyArNDksNyBAQCBMYXllckNoYW5nZXNG
bHVzaGVyOjpMYXllckNoYW5nZXNGbHVzaGVyKCkKIAogdm9pZCBMYXllckNoYW5nZXNGbHVzaGVy
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3Qq
IGhvc3QpCiB7Ci0gICAgaWYgKCFtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoLmFkZChob3N0KS5z
ZWNvbmQgfHwgbV9ob29rKQorICAgIGlmICghbV9ob3N0c1dpdGhDaGFuZ2VzVG9GbHVzaC5hZGQo
aG9zdCkuaXNOZXdFbnRyeSB8fCBtX2hvb2spCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEhv
b2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAppbmRleCA3MTFiODk2YWM2
MTI4ODM2MmVkNzJlZGY3MmE0NzA5MmZlNzIyNGJlLi5jYzUyYzUyZWI3MDU3ODJkZTFmOTY4ZGM4
MDNjNDVlNGYyYWUyMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwCkBA
IC00MTQsOCArNDE0LDggQEAgYm9vbCBnZXREZXJpdmVkRm9udERhdGEoY29uc3QgVUNoYXIqIGZh
bWlseSwKICAgICAgICAgLy8gYSBmb250IGV2ZW4gaWYgdGhlcmUncyBubyBmb250IG1hdGNoaW5n
IHRoZSBuYW1lLiBOZWVkIHRvCiAgICAgICAgIC8vIGNoZWNrIGl0IGFnYWluc3Qgd2hhdCB3ZSBh
Y3R1YWxseSB3YW50IChhcyBpcyBkb25lIGluCiAgICAgICAgIC8vIEZvbnRDYWNoZVdpbi5jcHAp
Ci0gICAgICAgIHBhaXI8Rm9udERhdGFDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gZm9u
dERhdGFDYWNoZS5hZGQoZm9udEtleSwgRm9udERhdGEoKSk7Ci0gICAgICAgIGRlcml2ZWQgPSAm
ZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgRm9udERhdGFDYWNoZTo6QWRkUmVzdWx0IGVu
dHJ5ID0gZm9udERhdGFDYWNoZS5hZGQoZm9udEtleSwgRm9udERhdGEoKSk7CisgICAgICAgIGRl
cml2ZWQgPSAmZW50cnkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgZGVyaXZlZC0+aGZvbnQg
PSBDcmVhdGVGb250SW5kaXJlY3QobG9nZm9udCk7CiAgICAgICAgIC8vIEdldEFzY2VudCBtYXkg
cmV0dXJuIGtVbmRlZmluZWRBc2NlbnQsIGJ1dCB3ZSBzdGlsbCB3YW50IHRvCiAgICAgICAgIC8v
IGNhY2hlIGl0IHNvIHRoYXQgd2Ugd29uJ3QgaGF2ZSB0byBjYWxsIENyZWF0ZUZvbnRJbmRpcmVj
dCBvbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKaW5kZXggMzcyYTBlMDhlOGYzYjI3Yzc0NWViNDViMTUyMzUzOTRlNzIwMjZjYi4uOThlZjI1
NGFhOThmNTgyMjg3ZjI0NjE4MjI3NzA2ODY0NGZjNGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JU
YXJnZXRBdmFpbGFiaWxpdHkoZG91CiAgICAgICAgICAgICAvLyBvZiBibG9ja2VkIHByb3BlcnRp
ZXMuCiAgICAgICAgICAgICBib29sIG51bGxJbnRlcnNlY3Rpb24gPSB0cnVlOwogICAgICAgICAg
ICAgZm9yIChUYXJnZXRQcm9wZXJ0aWVzOjppdGVyYXRvciBwSXRlciA9IGVucXVldWVkUHJvcGVy
dGllcy5iZWdpbigpOyBwSXRlciAhPSBlbnF1ZXVlZFByb3BlcnRpZXMuZW5kKCk7ICsrcEl0ZXIp
IHsKLSAgICAgICAgICAgICAgICBpZiAoIWJsb2NrZWRQcm9wZXJ0aWVzLmFkZCgqcEl0ZXIpLnNl
Y29uZCkKKyAgICAgICAgICAgICAgICBpZiAoIWJsb2NrZWRQcm9wZXJ0aWVzLmFkZCgqcEl0ZXIp
LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIG51bGxJbnRlcnNlY3Rpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAK
aW5kZXggMDQzN2JjZGZjMDliOTY3ZGE3ZmUxOTZmMjdiZjJlMGU3MTIyZWQ5OS4uYmU5Zjc0MTA0
ZmU3NDM0NDU3MTU2NDE2M2NmN2FhZDcwZTA3MmM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwCkBAIC0yNzgsMTUgKzI3OCwxNSBAQCBzdGF0aWMgdm9pZCBkaXNhYmxl
TGlnYXR1cmVzKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgQVRTVVN0eWxlIGF0c3VT
dHlsZQogc3RhdGljIEFUU1VTdHlsZSBpbml0aWFsaXplQVRTVVN0eWxlKGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBmb250RGF0YSwgVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVz
KQogewogICAgIHVuc2lnbmVkIGtleSA9IHR5cGVzZXR0aW5nRmVhdHVyZXMgKyAxOwotICAgIHBh
aXI8SGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0eWxlPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5hZGQoa2V5LCAwKTsKLSAgICBBVFNVU3R5bGUm
IGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kOwotICAgIGlmICghYWRkUmVzdWx0
LnNlY29uZCkKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBBVFNVU3R5bGU+OjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLmFkZChrZXksIDApOworICAgIEFUU1VT
dHlsZSYgYXRzdVN0eWxlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CisgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIGF0c3VTdHlsZTsKIAogICAgIEFU
U1VGb250SUQgZm9udElEID0gZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpID8gQ1RG
b250R2V0UGxhdGZvcm1Gb250KGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkg
OiAwOwogICAgIGlmICghZm9udElEKSB7CiAgICAgICAgIExPR19FUlJPUigidW5hYmxlIHRvIGdl
dCBBVFNVRm9udElEIGZvciAlcCIsIGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5mb250KCkpOwot
ICAgICAgICBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7
CisgICAgICAgIGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5yZW1vdmUoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVU
ZXh0LmNwcAppbmRleCA4MzJiYjlkZGY4ZGExMjk4ZmQzOTMyNTYyODRkMDRlNjM1OGYyNDI2Li4w
NTE5Mzc0MmM1ODUyZGJlOWM5Y2VkNjRiOWEwN2FhZDJjMWVhNDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwCkBAIC00Miw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENG
RGljdGlvbmFyeVJlZiBTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKFR5cGVz
ZXR0aW5nRmVhdHVyZXMgdHlwZXNldHRpbmdGZWF0dXJlcywgRm9udE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKSBjb25zdAogewogICAgIHVuc2lnbmVkIGtleSA9IHR5cGVzZXR0aW5nRmVhdHVyZXMg
KyAxOwotICAgIHBhaXI8SGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFk
ZChrZXksIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+KCkpOwotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+JiBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5maXJzdC0+c2Vj
b25kOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9DRlN0
cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4oKSk7Cisg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpOwogICAgIAogICAgIGJv
b2wgdHJlYXRMaW5lQXNWZXJ0aWNhbCA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhTWFjLm1tCmluZGV4IDhmNGE5MTkzZWY0ZDUzMjcxYmU1NGIwZGM1ZWZiZDlkZWJhYmRjNDUu
Ljc0YjI2ODZkNmNlNjBiYmZhNzBhYTBiMjI1MzM1Yjk2MDMyMzY0YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFN
YWMubW0KQEAgLTQ0MCw5ICs0NDAsOSBAQCBib29sIFNpbXBsZUZvbnREYXRhOjpjYW5SZW5kZXJD
b21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGVycwogICAgIGlm
ICghbV9jb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQpCiAgICAgICAgIG1fY29tYmlu
aW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0ID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8U3RyaW5n
LCBib29sPik7CiAKLSAgICBwYWlyPFdURjo6SGFzaE1hcDxTdHJpbmcsIGJvb2w+OjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9jb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQt
PmFkZChTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSwgZmFsc2UpOwotICAgIGlmICghYWRkUmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kOworICAg
IFdURjo6SGFzaE1hcDxTdHJpbmcsIGJvb2w+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9jb21i
aW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQtPmFkZChTdHJpbmcoY2hhcmFjdGVycywgbGVu
Z3RoKSwgZmFsc2UpOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJl
dHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIFJldGFpblB0cjxDR0ZvbnRS
ZWY+IGNnRm9udChBZG9wdENGLCBDVEZvbnRDb3B5R3JhcGhpY3NGb250KHBsYXRmb3JtRGF0YSgp
LmN0Rm9udCgpLCAwKSk7CiAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIFNpbXBsZUZvbnREYXRh
OjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFj
dGVycwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gdHJ1ZTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHRy
dWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNjky
ZmQ2ZDBkMWYxZGI4MWFkMjk3MmEzZjMzNDM3YmVmNmZlNjM1ZC4uMTk3OTBhZDQ5YjMzMDNkZDdi
NjJjN2U3YTBhODIzNjc3YjRjZmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTI4NSwx
MSArMjg1LDExIEBAIFBhc3NSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+IEZpeGVkU2l6ZUZvbnRE
YXRhOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pCiBzdGF0aWMgUGFzc1JlZlB0cjxG
aXhlZFNpemVGb250RGF0YT4gY3JlYXRlRml4ZWRTaXplRm9udERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHksIHVuc2lnbmVkIHdlaWdodCwgYm9vbCBpdGFsaWMpCiB7CiAgICAgRml4ZWRT
aXplRm9udERhdGFLZXkga2V5KGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOwotICAgIHBhaXI8Rml4
ZWRTaXplRm9udENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZ19maXhlZFNpemVGb250
Q2FjaGUuYWRkKGtleSwgUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPigpKTsKLSAgICBpZiAocmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBGaXhlZFNpemVGb250
RGF0YTo6Y3JlYXRlKGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOworICAgIEZpeGVkU2l6ZUZvbnRD
YWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGdfZml4ZWRTaXplRm9udENhY2hlLmFkZChrZXksIFJl
ZlB0cjxGaXhlZFNpemVGb250RGF0YT4oKSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IEZpeGVkU2l6ZUZvbnREYXRhOjpjcmVh
dGUoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5z
ZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBzdGF0aWMg
TE9ORyB0b0dESUZvbnRXZWlnaHQoRm9udFdlaWdodCBmb250V2VpZ2h0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcAppbmRleCBhNjY5YmM4ZWY4
NTIzZDQ4NjZmMWViODBhMjUxMjMzMDJhZDRjNDViLi43MjBmMGZkMzYwMWFkNTVjNDFmMDQ4ZGEz
OGU5MGIxNDBjNzg0MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGszLmNwcApAQCAtNzcsOSArNzcsOSBAQCBzdGF0aWMgU3R5bGVDb250ZXh0TWFw
JiBzdHlsZUNvbnRleHRNYXAoKQogCiBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNv
bnRleHQoR1R5cGUgd2lkZ2V0VHlwZSkKIHsKLSAgICBzdGQ6OnBhaXI8U3R5bGVDb250ZXh0TWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3R5bGVDb250ZXh0TWFwKCkuYWRkKHdpZGdldFR5
cGUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5m
aXJzdC0+c2Vjb25kLmdldCgpOworICAgIFN0eWxlQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IHN0eWxlQ29udGV4dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0
KCk7CiAKICAgICBHdGtXaWRnZXRQYXRoKiBwYXRoID0gZ3RrX3dpZGdldF9wYXRoX25ldygpOwog
ICAgIGd0a193aWRnZXRfcGF0aF9hcHBlbmRfdHlwZShwYXRoLCB3aWRnZXRUeXBlKTsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNvbnRleHQoR1R5
cGUgd2lkZ2V0VHlwZSkKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfcGF0aChjb250ZXh0Lmdl
dCgpLCBwYXRoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfZnJlZShwYXRoKTsKIAotICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gY29udGV4dDsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGNvbnRleHQ7CiAgICAgcmV0dXJuIGNvbnRleHQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQppbmRleCA0NzkyMTkxOTY4NmY3YWFjNjM2ZDkx
Mjk0ZmYxNGUxMDM0ZjQ3M2RlLi44OWZlZjAzMDljOTQ5OTQyZTI0ZGExYzI2ZDM5YTU4ZDU3ZDE0
NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCkBAIC0x
MDMsNyArMTAzLDcgQEAgdm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBXZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24KICAgICAgICAgY2FzZSBOb1Ro
cmVhZENoZWNrOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9nT25GaXJzdFRo
cmVhZFZpb2xhdGlvbjoKLSAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuYWRkKGZ1bmN0
aW9uKS5zZWNvbmQpIHsKKyAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuYWRkKGZ1bmN0
aW9uKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJXZWJLaXQgVGhyZWFk
aW5nIFZpb2xhdGlvbiAtICVzIGNhbGxlZCBmcm9tIHNlY29uZGFyeSB0aHJlYWQiLCBmdW5jdGlv
bik7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJBZGRpdGlvbmFsIHRocmVhZGluZyB2aW9sYXRp
b25zIGZvciB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGxvZ2dlZC4iKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
Y3BwCmluZGV4IDQ0YzU2ODFmYmJkNTM0OGIyMDE0OTM1MWZhMzY4MzJkNzk1ODI2MjguLjUwMDkx
ZTE5ZDNhZjU2ZmY0YThkZjE3NWJmODk3ODcwMDc2MTQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApAQCAtNzIsNyArNzIsNyBA
QCBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QKICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPjo6Z2V0KG5hbWUpOwogfQogCi1wYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29s
PiBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQorSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IEhUVFBIZWFkZXJNYXA6OmFkZChj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZChu
YW1lLCB2YWx1ZSk7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBIVFRQSGVhZGVyTWFwOjpj
b250YWlucyhjb25zdCBjaGFyKiBuYW1lKSBjb25zdAogICAgIHJldHVybiBmaW5kPGNvbnN0IGNo
YXIqLCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yPihuYW1lKSAhPSBlbmQoKTsKIH0KIAot
cGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitIVFRQSGVhZGVyTWFwOjpBZGRS
ZXN1bHQgSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VG
b2xkaW5nSGFzaD46OmFkZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRv
cj4obmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaAppbmRleCAwMjA3MWUzNjEwYzFkNGI0ZmNkZjRkNmM5NTliNDlmODdm
M2E1ZjE1Li4xMmJkZTA2ODk3ZTdjZTNmM2VjOTAxMmUxYzM3ZmRmZmU4ZDg5YzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNTEs
MTIgKzUxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIFN0cmlu
ZyBnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgICAgIC8vIEFsdGVybmF0ZSBhY2Nlc3NvcnMg
dGhhdCBhcmUgZmFzdGVyIHRoYW4gY29udmVydGluZyB0aGUgY2hhciogdG8gQXRvbWljU3RyaW5n
IGZpcnN0LgogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIGdldChjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IGFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAg
ICAgQWRkUmVzdWx0IGFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
ICAgICAgICAgCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggNDNhNjRlOTcwNzI0MDQwNDIy
N2RjYjBkNWUyNTZkMzc0Yjg3MzU5YS4uMzUwOTc5MjkyNzhjNzYwNjRjNGIwZGViOWFmZTM5ZmYx
OWJlNGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zNzEsOSArMzcxLDkgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpzZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkK
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgCiB7CiAgICAgdXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7Ci0gICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7IAotICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7
CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxk
cy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsIiArIHZhbHVlOwogCiAgICAgaWYgKHVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmlu
ZGV4IDNlNTk4YmFiNmI5YTg1MGE1YTZjYzkyOGMwMDY5YzA4OTNhODEwOWUuLjZlODE0YWViNWVm
OWQ2M2UwNjIwZmFiODJiNmIyZDczNjY2ZjM1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFz
ZTo6YWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gcHJwUGFja2FnZSkKIAogICAgIFJlZlB0
cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gcHJwUGFja2FnZTsKIAotICAgIGlmICghbV9wbHVn
aW5zLmFkZChwYWNrYWdlKS5zZWNvbmQpCisgICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2Up
LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fcGx1Z2luc0J5UGF0
aC5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lk
IFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAgICAgICAg
IFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFj
a2FnZUZyb21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsK
IAotICAgICAgICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5zZWNv
bmQpIHsKKyAgICAgICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1Z2lucy5hZGQocGFja2FnZSku
aXNOZXdFbnRyeSkgewogICAgICAgICAgICAgY2FjaGVkUGx1Z2luUGF0aHNXaXRoVGltZXMuYWRk
KHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZS0+bGFzdE1vZGlmaWVkKCkpOwogICAgICAgICAgICAg
Y2FjaGVkUGx1Z2luc0J5UGF0aC5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJh
c2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4u
Y3BwCmluZGV4IDI3MTIxYzY2NGUzYzZiNmJjNmI1ZDZlZGRiYmFiYmNmNzJiNzY5ZWQuLmZmYjQy
MWE0YzQyOGFjZTkyNGRmMzMzZTBhMDA4NTE5NjM2MTAxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNl
dDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gKml0ICsgIlxcIiArIGZpbGVuYW1lOwotICAgICAg
ICAgICAgaWYgKCF1bmlxdWVGaWxlbmFtZXMuYWRkKGZ1bGxQYXRoKS5zZWNvbmQpCisgICAgICAg
ICAgICBpZiAoIXVuaXF1ZUZpbGVuYW1lcy5hZGQoZnVsbFBhdGgpLmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHBhdGhzLmFkZChmdWxsUGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA2NTcwNzQ3N2Q3
MDUyMGY2ODY0NjA4N2MxMmE3MjFmZjI0ZWY2ZDNiLi44MzYyYWFlM2U2NzUyYTExMjdhMGM5YzA1
ZDU2OTdjNjcwZmIxZWYzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTM4MzMsNyArMzgzMyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZFBlcmNlbnRIZWln
aHREZXNjZW5kYW50KFJlbmRlckJveCogZGVzY2VuZGFudCkKICAgICAgICAgZGVzY2VuZGFudFNl
dCA9IG5ldyBIYXNoU2V0PFJlbmRlckJveCo+OwogICAgICAgICBnUGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzTWFwLT5zZXQodGhpcywgZGVzY2VuZGFudFNldCk7CiAgICAgfQotICAgIGJvb2wgYWRk
ZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoZGVzY2VuZGFudCkuc2Vjb25kOworICAgIGJvb2wgYWRk
ZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoZGVzY2VuZGFudCkuaXNOZXdFbnRyeTsKICAgICBpZiAo
IWFkZGVkKSB7CiAgICAgICAgIEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+Z2V0
KGRlc2NlbmRhbnQpKTsKICAgICAgICAgQVNTRVJUKGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFw
LT5nZXQoZGVzY2VuZGFudCktPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggZTVkNTliYjhlMGEy
MWQyZTM2MDA3NjA3OTg1Y2ExN2NiMzZkYTIyNi4uOWRkMjE4MTI1MDI1ZjI5M2E4NmI1NjU5N2M4
Yjc2ZjIxODRjZDVmMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTY2MiwxNCArNjYyLDE0IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJp
ZGlSdW4qIHJ1CiAgICAgcnVuLT5tX2JveC0+c2V0TG9naWNhbFdpZHRoKHJlbmRlcmVyLT53aWR0
aChydW4tPm1fc3RhcnQsIHJ1bi0+bV9zdG9wIC0gcnVuLT5tX3N0YXJ0LCB4UG9zLCBsaW5lSW5m
by5pc0ZpcnN0TGluZSgpLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3cpICsgaHlwaGVu
V2lkdGgpOwogICAgIGlmICghZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4
dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+
KCksIEdseXBoT3ZlcmZsb3coKSkpLmZpcnN0OworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVU
ZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIEFTU0VSVChpdC0+c2Vj
b25kLmZpcnN0LmlzRW1wdHkoKSk7CiAgICAgICAgIGNvcHlUb1ZlY3RvcihmYWxsYmFja0ZvbnRz
LCBpdC0+c2Vjb25kLmZpcnN0KTsKICAgICAgICAgcnVuLT5tX2JveC0+cGFyZW50KCktPmNsZWFy
RGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpOwogICAgIH0KICAgICBp
ZiAoKGdseXBoT3ZlcmZsb3cudG9wIHx8IGdseXBoT3ZlcmZsb3cuYm90dG9tIHx8IGdseXBoT3Zl
cmZsb3cubGVmdCB8fCBnbHlwaE92ZXJmbG93LnJpZ2h0KSkgewogICAgICAgICBBU1NFUlQocnVu
LT5tX2JveC0+aXNUZXh0KCkpOwotICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1
bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5
cGhPdmVyZmxvdygpKSkuZmlyc3Q7CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3go
cnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBH
bHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgaXQtPnNlY29uZC5zZWNvbmQgPSBn
bHlwaE92ZXJmbG93OwogICAgICAgICBydW4tPm1fYm94LT5jbGVhcktub3duVG9IYXZlTm9PdmVy
ZmxvdygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAKaW5kZXggOGMxYjZiZjE5YjczYTU4YjA0NzI4OGU5NTVhNTlkNjU1
ZjI2M2E5Yi4uZGFiNWQ3YjIxZTdhZTlmMGRkOWMwMGE1ODc0MDJhZGExYWM3ZmMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAK
QEAgLTIxNyw4ICsyMTcsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZh
bGlkUmVnaW9ucygpCiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5
T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCogb3RoZXJGbG93VGhyZWFkKQogewot
ICAgIHN0ZDo6cGFpcjxSZW5kZXJOYW1lZEZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJl
YWQpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFk
Q291bnRlZFNldDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5h
ZGQob3RoZXJGbG93VGhyZWFkKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSBzZWUgdGhpcyBkZXBlbmRlbmN5LiBNYWtl
IHN1cmUgd2UgcmVjYWxjdWxhdGUgYWxsIHRoZSBkZXBlbmRlbmNpZXMuCiAgICAgICAgIHZpZXco
KS0+c2V0SXNSZW5kZXJOYW1lZEZsb3dUaHJlYWRPcmRlckRpcnR5KHRydWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggY2NlMjVhNzQ3ZjI1
OGI0MzI4NWFiODI5OTg1MzRhMjc2MzA0YWRmMS4uZGU5OGZmODkxODg0NTQ0MTg2YTY4NzY0NTVk
OTM3MzJmZWQwMTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5j
cHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJSZWdpb246
OnNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsCiAgICAgaWYgKCFt
X2lzVmFsaWQgfHwgIW1fZmxvd1RocmVhZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25Q
dHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8u
YWRkKGJveCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmVuZGVyQm94UmVn
aW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgbnVsbHB0
cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoYm94SW5mbykKICAgICAgICAgKmJveEluZm8g
PSBSZW5kZXJCb3hSZWdpb25JbmZvKGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0
LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCmluZGV4IDkwN2ZlMTY3N2IxNzA0ODJjNmY0YWM1N2VkOTcxZDU3MjE5MWFlNDEuLmY4ZjQ5
M2RiODVhMGRkYjdhNjljMWYxNmNiMTc1ZjcwYWQ5ZGNiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBw
bHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKGdy
YWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBPd25QdHI8R3JhZGllbnREYXRhPiYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVu
dE1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxHcmFk
aWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZChvYmplY3QsIG51bGxw
dHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCiAgICAgICAgIGdy
YWRpZW50RGF0YSA9IGFkb3B0UHRyKG5ldyBHcmFkaWVudERhdGEpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAKaW5kZXggYmVjMGYzMzc0ZjQ2NDM2MmE5YTU4M2VhZjE5ODM1MDI4MWI4ZDAyYy4uNGRjNTAx
YjgwNmIzZDhkZjI1NDc0NTQzYmNmY2ZmMzg3NjBkNjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApA
QCAtODMsNyArODMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKG1fYXR0cmli
dXRlcy5wYXR0ZXJuVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0
dGVybk1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxQ
YXR0ZXJuRGF0YT4mIHBhdHRlcm5EYXRhID0gbV9wYXR0ZXJuTWFwLmFkZChvYmplY3QsIG51bGxw
dHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFwYXR0ZXJuRGF0YSkKICAgICAgICAgcGF0
dGVybkRhdGEgPSBhZG9wdFB0cihuZXcgUGF0dGVybkRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTWFwLmNwcAppbmRleCA0OGRiNjk4MDMyMjJhNGNiMzlhZDFhODUwMGZhNmM2Mzg0
ODIwNjg5Li44ZTQyZDJmMTc2ZGQzYjExMTJhMDFhNTFkOGRiNjJmNGIzOGJiYTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCBQYXNzUmVm
UHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdQogICAgIH0KICAgICBtX2N1cnJlbnRMZW5ndGggPSBuZXdMZW5ndGg7
CiAKLSAgICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciwgYm9vbD4gYWRk
UmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsKKyAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZh
bHVlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IHZhbHVlOwogCiAgICAgaW52YWxpZGF0ZUl0ZXJhdG9yKCk7CiAK
QEAgLTE3MSw4ICsxNzEsOCBAQCB2b2lkIFN0b3JhZ2VNYXA6OmltcG9ydEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQmUgc3VyZSB0byBjb3B5
IHRoZSBrZXlzL3ZhbHVlcyBhcyBpdGVtcyBpbXBvcnRlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFk
IGFyZSBkZXN0aW5lZAogICAgIC8vIHRvIGNyb3NzIGEgdGhyZWFkIGJvdW5kYXJ5Ci0gICAgcGFp
cjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFw
LmFkZChrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7ICAvLyBUcnVlIGlmIHRoZSBrZXkgZGlk
bid0IGV4aXN0IHByZXZpb3VzbHkuCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFkZFJl
c3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRl
ZENvcHkoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsg
Ly8gVHJ1ZSBpZiB0aGUga2V5IGRpZG4ndCBleGlzdCBwcmV2aW91c2x5LgogCiAgICAgQVNTRVJU
KG1fY3VycmVudExlbmd0aCArIGtleS5sZW5ndGgoKSA+PSBtX2N1cnJlbnRMZW5ndGgpOwogICAg
IG1fY3VycmVudExlbmd0aCArPSBrZXkubGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDgxMGI5NjY1YzFmYTgyMGUwMTk1NGY3MWYx
N2FlYzc3ZTU1ZGQyNWYuLjNmNTk3MDViMTcxNTQzN2JiYjc3NWU4OWMzYjQ5MjQwMzBiNjgzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0y
MTMsOSArMjEzLDkgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNv
dXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTVkdTdHlsZWQKIAogICAgIC8vIFRoZSBIYXNo
TWFwIGFkZCBmdW5jdGlvbiBsZWF2ZXMgdGhlIG1hcCBhbG9uZSBhbmQgcmV0dXJucyBhIHBvaW50
ZXIgdG8gdGhlIGVsZW1lbnQgaW4gdGhlCiAgICAgLy8gbWFwIGlmIHRoZSBlbGVtZW50IGFscmVh
ZHkgZXhpc3RzLiBTbyB3ZSBhZGQgd2l0aCBhIHZhbHVlIG9mIDAsIGFuZCBpdCBlaXRoZXIgZmlu
ZHMgdGhlCi0gICAgLy8gZXhpc3RpbmcgZWxlbWVudCBvciBhZGRzIGEgbmV3IG9uZSBpbiBhIHNp
bmdsZSBvcGVyYXRpb24uIFRoZSAiLmZpcnN0LT5zZWNvbmQiIGlkaW9tIGdldHMKKyAgICAvLyBl
eGlzdGluZyBlbGVtZW50IG9yIGFkZHMgYSBuZXcgb25lIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4g
VGhlICIuaXRlcmF0b3ItPnNlY29uZCIgaWRpb20gZ2V0cwogICAgIC8vIHVzIHRvIHRoZSBpdGVy
YXRvciBmcm9tIGFkZCdzIHJlc3VsdCwgYW5kIHRoZW4gdG8gdGhlIHZhbHVlIGluc2lkZSB0aGUg
aGFzaCB0YWJsZS4KLSAgICBTVkdQZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRpbmdSZXNv
dXJjZXMuYWRkKGlkLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNWR1BlbmRpbmdFbGVtZW50cyom
IHNldCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFzZXQpCiAgICAgICAgIHNldCA9IG5ldyBTVkdQZW5kaW5nRWxlbWVudHM7CiAgICAg
c2V0LT5hZGQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRl
eCA3MTIyMDBjZTY5M2M5ZDVkYWIxODBhMDcxNWZlYjdhMWY5ZjYzNTMzLi5hNzFjNDQ1NTUzODdm
NWZmODY4NDQzNTI5ODc0MjQ0NDJjNjg4NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKQEAgLTg5OSw5ICs4OTksOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1
ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YQogCiB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHBhaXI8SFRUUEhlYWRl
ck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUs
IHZhbHVlKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kICs9ICIsICIgKyB2YWx1ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9yZXF1ZXN0SGVhZGVycy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsICIgKyB2
YWx1ZTsKIH0KIAogU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwCmluZGV4IDE1NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEuLjcwN2Nj
N2ZjZTJjNzM2MThlODI5ODZkZDZiOTZjNWZlZjczOThlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRnVuY3Rpb25zLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0
ZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzZXZlcmFsIG5vZGVzIHdpdGggdGhl
IHNhbWUgaWQsIGlkKCkgc2hvdWxkIHJldHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAgICAvLyBJ
biBXZWJLaXQsIGdldEVsZW1lbnRCeUlkIGJlaGF2ZXMgc28sIHRvbywgYWx0aG91Z2ggaXRzIGJl
aGF2aW9yIGluIHRoaXMgY2FzZSBpcyBmb3JtYWxseSB1bmRlZmluZWQuCiAgICAgICAgIE5vZGUq
IG5vZGUgPSBjb250ZXh0U2NvcGUtPmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZExpc3QuY2hhcmFj
dGVycygpICsgc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgIGlmIChub2Rl
ICYmIHJlc3VsdFNldC5hZGQobm9kZSkuc2Vjb25kKQorICAgICAgICBpZiAobm9kZSAmJiByZXN1
bHRTZXQuYWRkKG5vZGUpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5v
ZGUpOwogICAgICAgICAKICAgICAgICAgc3RhcnRQb3MgPSBlbmRQb3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhdGguY3BwCmluZGV4IGQ5ZDFmZDQ3ZDY2NGYwYzliZGYxNDZhYzIxZGQ5M2FkZmFiNGEyMDQu
LmJhMWRlZDM5ZTE4NGEwM2U1ZTE4MzU1M2Q4MGVkNmNhZGZlY2ZhYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFBhdGguY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBMb2NhdGlvblBhdGg6OmV2YWx1
YXRlKE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBub2Rl
SW5kZXggPSAwOyBub2RlSW5kZXggPCBtYXRjaGVzLnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbWF0Y2hlc1tub2RlSW5kZXhdOwotICAgICAgICAg
ICAgICAgIGlmICghbmVlZFRvQ2hlY2tGb3JEdXBsaWNhdGVOb2RlcyB8fCBuZXdOb2Rlc1NldC5h
ZGQobm9kZSkuc2Vjb25kKQorICAgICAgICAgICAgICAgIGlmICghbmVlZFRvQ2hlY2tGb3JEdXBs
aWNhdGVOb2RlcyB8fCBuZXdOb2Rlc1NldC5hZGQobm9kZSkuaXNOZXdFbnRyeSkKICAgICAgICAg
ICAgICAgICAgICAgbmV3Tm9kZXMuYXBwZW5kKG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCA1OGNkODc5OGViMzYz
YWViYjZiNDhjMzM5NTY3MDBmZjEwNzVhNTc3Li4zNjgwMGExMTc0MTZkMDcyNmEyYWIyMjI4OTk3
YTBiZmIxYzg5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBWYWx1ZSBVbmlvbjo6ZXZhbHVhdGUoKSBjb25zdAogICAgIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmhzTm9kZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9k
ZSogbm9kZSA9IHJoc05vZGVzW2ldOwotICAgICAgICBpZiAobm9kZXMuYWRkKG5vZGUpLnNlY29u
ZCkKKyAgICAgICAgaWYgKG5vZGVzLmFkZChub2RlKS5pc05ld0VudHJ5KQogICAgICAgICAgICAg
cmVzdWx0U2V0LmFwcGVuZChub2RlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCmluZGV4IGUzZGNlOGM1YWM0ZDZmNmNlNDc2OThl
MmYzYTcxMjUyNjEyMmM3NTkuLjNjMGNmMTVkNWM5YzczYWM2NTc4YzliYTc3NmNlOWJlOTM0YWVl
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNw
cApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgV2ViSFRUUExvYWRJbmZvOjpzZXRFbmNvZGVkRGF0
YUxlbmd0aChsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiAKIHN0YXRpYyB2b2lkIGFkZEhl
YWRlcihIVFRQSGVhZGVyTWFwKiBtYXAsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtYXAtPmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25k
KQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZhbHVlKTsK
KyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFs
dWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kICs9ICIsICIgKyBTdHJpbmcodmFsdWUpOwogfQogCiB2b2lkIFdlYkhUVFBMb2Fk
SW5mbzo6YWRkUmVxdWVzdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25z
ZS5jcHAKaW5kZXggZWMyMTJlNTE3N2NjNTg2MzhjZTAxNzJjNzVmMTA4ZDNmMzc1MmQzYi4uMDdk
NWE0NWY4OGNlOWM4YTM0Mzc0OTMzYzJiNDM3NjllNGEwMDc3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAg
dm9pZCBXZWJVUkxSZXNwb25zZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJgogICAgIC8vIEZJWE1FOiBBZGQgYW4gYWRkSFRUUEhlYWRl
ckZpZWxkIG1ldGhvZCB0byBSZXNvdXJjZVJlc3BvbnNlLgogICAgIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG1hcCA9IG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5odHRwSGVhZGVyRmllbGRz
KCk7CiAgICAgU3RyaW5nIHZhbHVlU3RyKHZhbHVlKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPQorICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPQogICAgICAgICBjb25zdF9jYXN0PEhUVFBIZWFkZXJNYXAqPigmbWFwKS0+YWRkKG5h
bWUsIHZhbHVlU3RyKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kICs9ICIsICIgKyB2YWx1ZVN0cjsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWVTdHI7
CiB9CiAKIHZvaWQgV2ViVVJMUmVzcG9uc2U6OmNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGNlNDBmNDgwMjYx
MTRiYTgwNjBlYWQ4MjViMjg3YjM0MDYwNDU3MTYuLmM1MTBhOWE5M2Q1YjE3NDMxMWUyZDczMzBm
MjFiNTk0YmEwNTcyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtNjksMTUgKzY5
LDE1IEBAIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6On5OZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyKCkKIAogTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXI6Omhvc3RGb3JQbHVnaW4oY29uc3QgV1RGOjpTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90eXBl
X3QgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCiB7
Ci0gICAgcGFpcjxQbHVnaW5Ib3N0TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wbHVn
aW5Ib3N0cy5hZGQocGx1Z2luUGF0aCwgMCk7CisgICAgUGx1Z2luSG9zdE1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fcGx1Z2luSG9zdHMuYWRkKHBsdWdpblBhdGgsIDApOwogICAgIAogICAgIC8v
IFRoZSBwYWNrYWdlIHdhcyBhbHJlYWR5IGluIHRoZSBtYXAsIGp1c3QgcmV0dXJuIGl0LgotICAg
IGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25k
OworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZDsKICAgICAgICAgCiAgICAgbWFjaF9wb3J0X3QgY2xpZW50UG9ydDsKICAg
ICBpZiAobWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmY2xpZW50UG9ydCkgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIG1fcGx1
Z2luSG9zdHMucmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgICAgIG1fcGx1Z2luSG9zdHMucmVt
b3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAg
LTg1LDcgKzg1LDcgQEAgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXI6Omhvc3RGb3JQbHVnaW4oY29uc3QgV1RGOjpTdHIKICAgICBQcm9jZXNzU2VyaWFs
TnVtYmVyIHBsdWdpbkhvc3RQU047CiAgICAgaWYgKCFzcGF3blBsdWdpbkhvc3QocGx1Z2luUGF0
aCwgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjbGllbnRQb3J0LCBwbHVnaW5Ib3N0UG9ydCwgcGx1Z2lu
SG9zdFBTTikpIHsKICAgICAgICAgbWFjaF9wb3J0X2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwg
Y2xpZW50UG9ydCk7Ci0gICAgICAgIG1fcGx1Z2luSG9zdHMucmVtb3ZlKHJlc3VsdC5maXJzdCk7
CisgICAgICAgIG1fcGx1Z2luSG9zdHMucmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTk1LDcgKzk1LDcgQEAgTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omhvc3RGb3JQbHVnaW4oY29uc3Qg
V1RGOjpTdHIKICAgICAKICAgICBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eSogaG9zdFByb3h5ID0g
bmV3IE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KGNsaWVudFBvcnQsIHBsdWdpbkhvc3RQb3J0LCBw
bHVnaW5Ib3N0UFNOLCBzaG91bGRDYWNoZU1pc3NpbmdQcm9wZXJ0aWVzQW5kTWV0aG9kcyk7CiAg
ICAgCi0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBob3N0UHJveHk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBob3N0UHJveHk7CiAgICAgCiAgICAgcmV0dXJuIGhvc3RQcm94eTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tCmluZGV4IGEzOTY2OWNhNTAzZDNjZDdjYzg3ODgwMmVjYmMzYmZhOGEyODFhNTkuLjA5NDQz
ZGMxNjI4YTY2OGYyZmIyMTRmM2I1MzE3YzZiNTQ0NDQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzc2LDEzICszNzYs
MTMgQEAgTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIAogICAgIC8v
IEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hp
bGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCi0gICAgcGFpcjxNZXRob2RNYXA6Oml0ZXJhdG9y
LCBib29sPiBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAw
KTsKLSAgICBpZiAobWFwQWRkUmVzdWx0LnNlY29uZCAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAg
ICAgIG1hcEFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IFByb3h5TWV0aG9kKG1ldGhvZE5h
bWUpOworICAgIE1ldGhvZE1hcDo6QWRkUmVzdWx0IG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5h
ZGQoaWRlbnRpZmllci5pbXBsKCksIDApOworICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRy
eSAmJiByZXBseS0+bV9yZXN1bHQpCisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gbmV3IFByb3h5TWV0aG9kKG1ldGhvZE5hbWUpOwogCiAgICAgTWV0aG9kTGlzdCBtZXRo
b2RMaXN0OwotICAgIGlmIChtYXBBZGRSZXN1bHQuZmlyc3QtPnNlY29uZCkKLSAgICAgICAgbWV0
aG9kTGlzdC5hcHBlbmQobWFwQWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIGlmIChtYXBB
ZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCkKKyAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQobWFw
QWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIHJldHVybiBtZXRob2RMaXN0OwogfQog
CkBAIC00MTIsMTAgKzQxMiwxMCBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAg
ICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVk
IHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgotICAgIHBhaXI8RmllbGRNYXA6Oml0ZXJh
dG9yLCBib29sPiBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQoaWRlbnRpZmllci5pbXBsKCks
IDApOwotICAgIGlmIChtYXBBZGRSZXN1bHQuc2Vjb25kICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAg
ICAgICAgbWFwQWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgUHJveHlGaWVsZChwcm9wZXJ0
eU5hbWUpOwotICAgIHJldHVybiBtYXBBZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBGaWVs
ZE1hcDo6QWRkUmVzdWx0IG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChpZGVudGlmaWVyLmlt
cGwoKSwgMCk7CisgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jl
c3VsdCkKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgUHJveHlG
aWVsZChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogSlNDOjpKU1ZhbHVlIFByb3h5SW5zdGFuY2U6OmZpZWxkVmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KaW5k
ZXggYjBmZmRmZDhmODUyOGNiNTZhMzc4ZTljYWM3ZTQ5MmY3Yjk5YWYzYi4uODEyMDkzNjAxNjM3
NDliNzY2ZmM3YjhkM2Q3MDYwMjdjYjI3ZDZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQpAQCAtNzEs
NyArNzEsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKICAgICBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiB3ZWJOb3RpZmlj
YXRpb24gPSBhZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uIGFsbG9jXSBpbml0V2l0aENvcmVOb3Rp
ZmljYXRpb246bm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5vdGlmaWNhdGlvbklEXSk7CiAg
ICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgd2ViTm90aWZpY2F0aW9uKTsK
IAotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRp
b25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
VmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+ID4oKSkuZmlyc3Q7CisgICAgTm90aWZp
Y2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAu
YWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8UmV0YWlu
UHRyPFdlYk5vdGlmaWNhdGlvbj4gPigpKS5pdGVyYXRvcjsKICAgICBpdC0+c2Vjb25kLmFwcGVu
ZCh3ZWJOb3RpZmljYXRpb24pOwogCiAgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3Zp
ZGVyXSBzaG93Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbi5nZXQoKSBmcm9tV2ViVmlldzpt
X3dlYlZpZXddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKaW5kZXggYzQ0NTBmNzQ5ZWUx
ZmE5NjQ1YTYxMzBlYzhiYzNiZWY5NTQ0YTE0YS4uOWM5Y2MwMjZiNDdiNGZlYTk2MGM2Mzk4NDZl
MGViYTUxYzQ2NTNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJ
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCkBAIC01MSwxMCAr
NTEsOSBAQCBzdGF0aWMgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+IGNsYXNzRmFjdG9yeShjb25zdCBD
TFNJRCYgY2xzaWQpCiAgICAgdHlwZWRlZiBIYXNoTWFwPENMU0lELCBDT01QdHI8SUNsYXNzRmFj
dG9yeT4sIENMU0lESGFzaCwgQ0xTSURIYXNoVHJhaXRzPiBGYWN0b3J5TWFwOwogICAgIHN0YXRp
YyBGYWN0b3J5TWFwJiBmYWN0b3JpZXMgPSAqbmV3IEZhY3RvcnlNYXA7CiAKLSAgICBwYWlyPEZh
Y3RvcnlNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAw
KTsKLSAgICBDT01QdHI8SUNsYXNzRmFjdG9yeT4mIGZhY3RvcnkgPSByZXN1bHQuZmlyc3QtPnNl
Y29uZDsKLSAgICBib29sIGFkZGVkID0gcmVzdWx0LnNlY29uZDsKLSAgICBpZiAoYWRkZWQgJiYg
RkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihmYWN0b3J5KSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQorICAgIEZhY3RvcnlNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAwKTsKKyAgICBDT01QdHI8SUNsYXNzRmFj
dG9yeT4mIGZhY3RvcnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkgJiYgRkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihm
YWN0b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQogICAgICAgICBm
YWN0b3J5ID0gMDsKIAogICAgIHJldHVybiBmYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGEyZmZhMGYyNTBiZTg5MDYx
MjQwNzFjZDQ4MjlkNzg4YjdiOGFmMzguLjA3MGY0NTgzMDc5ZjdiNGVlYmZjZjRhMmE4ODg0Nzg2
ZDhjNTU0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQog
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoa2V5LCB2
YWx1ZSkuc2Vjb25kKSB7CisgICAgICAgICAgICBpZiAoIXRlbXBIYXNoTWFwLmFkZChrZXksIHZh
bHVlKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFwIGFscmVh
ZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgogICAgICAgICAgICAgICAgIGRlY29kZXIt
Pm1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggM2MyZjE0Y2Vk
MDNlOGYwOWJmMDUzOTY4ODliMTg0ZWY4Yjg1YzU5ZS4uZjdjMzcyM2Y3ZWY3ZGQyMjkxZWE1OTE1
MDYwMDkzZGMxYzQxOGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBwcml2YXRlOgogUGFzc1JlZlB0
cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQogewogICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAgcGFpcjxTeW5jTWVzc2FnZVN0
YXRlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFk
ZChydW5Mb29wLCAwKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCAwKTsKIAotICAgIGlmICghcmVz
dWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkgeworICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgUmVmUHRyPFN5
bmNNZXNzYWdlU3RhdGU+IHN5bmNNZXNzYWdlU3RhdGUgPSBhZG9wdFJlZihuZXcgU3luY01lc3Nh
Z2VTdGF0ZShydW5Mb29wKSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBzeW5jTWVzc2Fn
ZVN0YXRlLmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gc3luY01lc3NhZ2VT
dGF0ZS5nZXQoKTsKIAogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJlbGVhc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwCmluZGV4IDJmOTA1
ZWM2YTEyNDg3MGQ4OTdiYTM3MDA0YmU4Y2FkMmZiMmMxNzQuLmFjNjliNzZhM2IyNGFmN2VjMTZh
ZTk3NzM3OWM1MWE2ZTNkZTNkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9N
dXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVE
aWN0aW9uYXJ5LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIE11dGFibGVEaWN0aW9uYXJ5Ojp+TXV0
YWJsZURpY3Rpb25hcnkoKQogCiBib29sIE11dGFibGVEaWN0aW9uYXJ5OjphZGQoY29uc3QgU3Ry
aW5nJiBrZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8TWFwVHlwZTo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOwotICAgIHJldHVybiBy
ZXN1bHQuc2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQo
a2V5LCBpdGVtKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKIGJvb2wgTXV0
YWJsZURpY3Rpb25hcnk6OnNldChjb25zdCBTdHJpbmcmIGtleSwgQVBJT2JqZWN0KiBpdGVtKQog
ewotICAgIHN0ZDo6cGFpcjxNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAu
c2V0KGtleSwgaXRlbSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5zZWNvbmQ7CisgICAgTWFwVHlwZTo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOworICAgIHJldHVybiByZXN1
bHQuaXNOZXdFbnRyeTsKIH0KIAogdm9pZCBNdXRhYmxlRGljdGlvbmFyeTo6cmVtb3ZlKGNvbnN0
IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaApp
bmRleCA5NjcyZjI4ZGYzN2FhYjkxMWZkYzI4MWJlMmM2ODIwMDA1YzJhYmYxLi5hY2U3MmZkMmUz
M2UzYmMxMTdmYzJmYTQ1NWYxNWQ4Nzc3ZmMwMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VXNlck1lc3NhZ2VDb2RlcnMuaApAQCAtMjg1LDggKzI4NSw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShtZXNzYWdlQ29kZXIpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8SW1tdXRh
YmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC5zZXQo
a2V5LCBlbGVtZW50LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vj
b25kKQorICAgICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OkFkZFJl
c3VsdCByZXN1bHQgPSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCAxM2FlZmI4MmJkMTJkOTY1ZmE1MDc0
MTY2YTdkZDUxMzljZTVlMmJlLi4zMTI1OGYyMDFiOTgyNjg0MDM5MDQ4YjQwOGM2YjM3MDQ1NzBh
ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50
aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50
aW5nVmlldy5tbQpAQCAtMjI4LDggKzIyOCw4IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9Q
REYoV0tEYXRhUmVmIGRhdGFSZWYsIFdLRXJyb3JSZWYsIHZvaWQqIHVudHlwZWRDb250ZXh0CiAg
ICAgICAgICAgICBBU1NFUlQoW3ZpZXcgX2lzUHJpbnRpbmdQcmV2aWV3XSk7CiAKICAgICAgICAg
ICAgIGlmIChkYXRhKSB7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNoTWFwPFdlYkNvcmU6Oklu
dFJlY3QsIFZlY3Rvcjx1aW50OF90PiA+OjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSB2aWV3LT5f
cGFnZVByZXZpZXdzLmFkZChpdGVyLT5zZWNvbmQsIFZlY3Rvcjx1aW50OF90PigpKTsKLSAgICAg
ICAgICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kLmFwcGVuZChkYXRhLT5ieXRlcygpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6SW50UmVjdCwgVmVj
dG9yPHVpbnQ4X3Q+ID46OkFkZFJlc3VsdCBlbnRyeSA9IHZpZXctPl9wYWdlUHJldmlld3MuYWRk
KGl0ZXItPnNlY29uZCwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICAgICAgICAgIGVudHJ5
Lml0ZXJhdG9yLT5zZWNvbmQuYXBwZW5kKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB2aWV3LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LnJlbW92ZShjb250ZXh0LT5jYWxsYmFja0lEKTsKICAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRS
ZXNwb25zZVRvTGF0ZXN0UmVxdWVzdCA9IHZpZXctPl9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxs
YmFjayA9PSBjb250ZXh0LT5jYWxsYmFja0lEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCmluZGV4IDdmOTU3OWE2MmE3NzkwODNmMmFmYTM2YjNhMjYzZDFiZDgx
MzM5NWMuLjYxZTNiNjA3NWQ0MDgyNWNhM2VhNzYzYzgwMGNhNmViMWMyMTg1YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTcyMSw5ICs3MjEsOSBA
QCBzdGF0aWMgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhXS1N0cmluZ1JlZiBjb21tYW5k
TmFtZSwgYm9vbCBpc0VuYWJsZWQsIGludAogICAgICAgICByZXR1cm4gWUVTOwogCiAgICAgLy8g
QWRkIHRoaXMgaXRlbSB0byB0aGUgdmVjdG9yIG9mIGl0ZW1zIGZvciBhIGdpdmVuIGNvbW1hbmQg
dGhhdCBhcmUgYXdhaXRpbmcgdmFsaWRhdGlvbi4KLSAgICBwYWlyPFZhbGlkYXRpb25NYXA6Oml0
ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBfZGF0YS0+X3ZhbGlkYXRpb25NYXAuYWRkKGNvbW1h
bmROYW1lLCBWYWxpZGF0aW9uVmVjdG9yKCkpOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25k
LmFwcGVuZChpdGVtKTsKLSAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkgeworICAgIFZhbGlkYXRp
b25NYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBfZGF0YS0+X3ZhbGlkYXRpb25NYXAuYWRkKGNv
bW1hbmROYW1lLCBWYWxpZGF0aW9uVmVjdG9yKCkpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kLmFwcGVuZChpdGVtKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgLy8gSWYgd2UgYXJlIG5vdCBhbHJlYWR5IGF3YWl0aW5nIHZhbGlkYXRpb24gZm9yIHRo
aXMgY29tbWFuZCwgc3RhcnQgdGhlIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIHByb2Nlc3MuCiAg
ICAgICAgIC8vIEZJWE1FOiBUaGVvcmV0aWNhbGx5LCB0aGVyZSBpcyBhIHJhY2UgaGVyZTsgd2hl
biB3ZSBnZXQgdGhlIGFuc3dlciBpdCBtaWdodCBiZSBvbGQsIGZyb20gYSBwcmV2aW91cyB0aW1l
CiAgICAgICAgIC8vIHdlIGFza2VkIGZvciB0aGUgc2FtZSBjb21tYW5kOyB0aGVyZSBpcyBubyBn
dWFyYW50ZWUgdGhlIGFuc3dlciBpcyBzdGlsbCB2YWxpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOWNlNTQ0MDdlNTY5ZDUwMzBmODFkYWJh
MWVmZGNiOTliZmIwYTBmOS4uZThkZmQ4MTY4YzdhMjcxMjY0YWNmNWM3MWRkOTAyYzBhNzQ1NWI4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTI3MSwxOCArMjcxLDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgaXRlbUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsCiAgICAgTUVTU0FHRV9D
SEVDS19VUkwob3JpZ2luYWxVUkwpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAg
ICBzdGQ6OnBhaXI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkgewotICAgICAgICAvLyBOZXcgaXRlbS4KLSAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQgPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkws
IHVybCwgdGl0bGUsIGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXpl
KCksIGl0ZW1JRCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCAwKTsKKyAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUob3JpZ2luYWxVUkwsIHVybCwgdGl0bGUsIGJh
Y2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCksIGl0ZW1JRCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0T3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpOwotICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRVUkwodXJsKTsKLSAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZC0+c2V0VGl0bGUodGl0bGUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLT5zZXRCYWNr
Rm9yd2FyZERhdGEoYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUo
KSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldE9yaWdpbmFsVVJMKG9yaWdpbmFs
VVJMKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+c2V0VVJMKHVybCk7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldFRpdGxlKHRpdGxlKTsKKyAgICByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZC0+c2V0QmFja0ZvcndhcmREYXRhKGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJh
Y2tGb3J3YXJkRGF0YS5zaXplKCkpOwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggY2Vi
YmIzMGMxYWYzYjRkOWMxZDIzOWIwOGZiZjRlNWFlNzZlZjQ2ZS4uN2Q3MzA1ZWRiYzMwY2RlMDkx
ZmFmY2YzZWM5YzMyMGU1OGM2ZTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC02NywxMiArNjcsMTIgQEAgUGFzc1JlZlB0cjxJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
Tm9kZSoKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc3RkOjpwYWly
PERPTUhhbmRsZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUo
KS5hZGQobm9kZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4g
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+KHJlc3VsdC5maXJzdC0+c2Vjb25k
KTsKKyAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hl
KCkuYWRkKG5vZGUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJl
dHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhh
bmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Y3JlYXRlKG5vZGUpOwotICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gbm9kZUhhbmRsZS5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3It
PnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7CiAgICAgcmV0dXJuIG5vZGVIYW5kbGUucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwCmluZGV4IGU5NGVkZmQzNGI4Yjg5ZDM2ZTlkM2U3ZmRiMGM0N2EwMDUyNWUxMTkuLjFiNzRm
MDEyNDAwOGRiM2MwNzgyOGVhNmY2ZDJjMDVhYzA1OWMzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAgUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlOjpnZXRPckNyZWF0ZShSYW4KICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHN0ZDo6cGFpcjxET01IYW5kbGVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJhbmdlLCAwKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQp
Ci0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJl
c3VsdC5maXJzdC0+c2Vjb25kKTsKKyAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHJhbmdlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlPihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpj
cmVhdGUocmFuZ2UpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0
KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSByYW5nZUhhbmRsZS5nZXQoKTsKICAg
ICByZXR1cm4gcmFuZ2VIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKaW5kZXggMjdlNGM3MmVhMWY3NGQ1ZTExNTU0NTRiOGEzNWM5Y2FlMzY5
YThlYy4uMjZlNTQwNzQ0YmQ1Mjc0YzliNmRhY2VlYTViZjk0ZmEzYWUwNDk3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2Vi
UGFnZSogcGFnZSkKICAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3Rp
ZmljYXRpb25JRCk7CiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbik7CiAgICAgCi0gICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0
b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLmZpcnN0OworICAgIE5vdGlm
aWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFw
LmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2
NF90PigpKS5pdGVyYXRvcjsKICAgICBpdC0+c2Vjb25kLmFwcGVuZChub3RpZmljYXRpb25JRCk7
CiAgICAgCiAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNh
dGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmljb25VUkwoKS5zdHJpbmcoKSwgbm90aWZpY2F0
aW9uLT5yZXBsYWNlSWQoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFn
ZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzFi
YTA1MGNmNmRhMWQ3YWExNjE3NjE0MzdmNGM0OGQ1YWRlMjFkMS4uMmRmY2RlMDgzYjljMTRiMWM0
MTEyNjNiNjYyMzAzODlmZTFiZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC01MTgsMTYgKzUxOCwxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgog
ewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVy
ZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmsp
IHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVy
IGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAKLSAgICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VN
YXAuYWRkKHBhZ2VJRCwgMCk7Ci0gICAgaWYgKHJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNT
RVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25k
ID0gV2ViUGFnZTo6Y3JlYXRlKHBhZ2VJRCwgcGFyYW1ldGVycyk7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VNYXAuYWRk
KHBhZ2VJRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEFTU0VS
VCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCA9IFdlYlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOwogCiAgICAgICAgIC8v
IEJhbGFuY2VkIGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJlbW92ZVdlYlBhZ2UuCiAgICAg
ICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmly
c3QtPnNlY29uZCk7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKQEAgLTczOSwx
MyArNzM5LDEzIEBAIFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAo
dWludDY0X3QgcGFnZUdyb3VwSUQpCiAKIFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3
ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0YSkKIHsKLSAg
ICBzdGQ6OnBhaXI8SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91cERh
dGEucGFnZUdyb3VwSUQsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFT
U0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCA9IFdlYlBhZ2VHcm91cFByb3h5OjpjcmVhdGUocGFnZUdyb3VwRGF0YSk7CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+OjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9wYWdlR3JvdXBNYXAuYWRkKHBhZ2VHcm91cERhdGEucGFnZUdyb3VwSUQsIDApOworICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJQYWdlR3Jv
dXBQcm94eTo6Y3JlYXRlKHBhZ2VHcm91cERhdGEpOwogICAgIH0KIAotICAgIHJldHVybiByZXN1
bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA1OWRlY2E4OTZkZDg3NWQwYWI1YjMwZDdhYmU3MDgx
ODIzMDQ2NGYuLjJkMDk4MzU5OTZkM2JmNzQ5MjFhZTlkMjUxY2Y4MTE2OTkxZDg0ODIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5v
bGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCBy
ZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3Rl
YWQgb2YgYSBwYWlyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRl
U2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToK
KwogMjAxMi0wMy0yOSAgVmluZWV0IENoYXVkaGFyeSAgPHJnZjc0OEBtb3Rvcm9sYS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIGN1c3RvbSBiaW5kaW5ncyBmb3JtIEludGVybmFscy5pZGwgb2YgYXR0
cmlidXRlIHR5cGUgQXJyYXkuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggOTBlNTQzMzQ2ZDk0ZmMxNmI2ZDE3M2JiZDQ2
N2FhNzUyZTUwY2YxNi4uMTg5OTFjZWVjMGEwMDQ1ZjJlMjc5YTZlMTk5NWZjN2NiZmRjOGQ0ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQpAQCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV2
YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2JqCiAgICAg
aWYgKCF3b3JsZElEKQogICAgICAgICB3b3JsZCA9IFtXZWJTY3JpcHRXb3JsZCB3b3JsZF07CiAg
ICAgZWxzZSB7Ci0gICAgICAgIFJldGFpblB0cjxXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9
IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIFJldGFp
blB0cjxXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQs
IDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIGlmICghd29ybGRTbG90KQogICAgICAgICAg
ICAgd29ybGRTbG90LmFkb3B0TlMoW1tXZWJTY3JpcHRXb3JsZCBhbGxvY10gaW5pdF0pOwogICAg
ICAgICB3b3JsZCA9IHdvcmxkU2xvdC5nZXQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDgwOTQxYjhlMDY3MmRh
ZjQwNTdlMWZlMDdmYTAzNThlMGZhY2JhMWMuLjFiNmE0MTU3YzQ4ZTY2NjVkNTM5Y2FjOGFkNzg4
MDkzMjNjNzIwZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTMwMiw3ICsxMzAyLDcgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29y
bGRJRCwgSlNPYmoKICAgICAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShfX3V1
aWRvZihXZWJTY3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdvcmxkKSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZ3b3JsZCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2Ugewot
ICAgICAgICBDT01QdHI8SVdlYlNjcmlwdFdvcmxkPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5h
ZGQod29ybGRJRCwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgQ09NUHRyPElXZWJTY3JpcHRX
b3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgICAgIGlmICghd29ybGRTbG90ICYmIEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0
YW5jZShfX3V1aWRvZihXZWJTY3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdvcmxkU2xvdCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmd29ybGRTbG90KSkpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB3b3JsZCA9IHdvcmxkU2xvdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggMDU4MzQ4Njg0OWQ1YzdlZjU1NGM2NzdhNmMyM2Y0ZmM5OGI4ZDFiOS4uY2VjNDM0NGRk
MmNmMzQ1NmY3YjUyZDc3Yjk3ZDMwYzdlZDI1MDBlYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChKU0NvbnRleHRSZWYgY29udGV4dCwgdQogICAgIGlm
ICghd29ybGRJRCkKICAgICAgICAgd29ybGQuYWRvcHQoV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0
ZVdvcmxkKCkpOwogICAgIGVsc2UgewotICAgICAgICBXS1JldGFpblB0cjxXS0J1bmRsZVNjcmlw
dFdvcmxkUmVmPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuZmlyc3Qt
PnNlY29uZDsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4mIHdv
cmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgIGlmICghd29ybGRTbG90KQogICAgICAgICAgICAgd29ybGRTbG90LmFkb3B0KFdLQnVu
ZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpKTsKICAgICAgICAgd29ybGQgPSB3b3JsZFNsb3Q7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134610</attachid>
            <date>2012-03-29 10:11:40 -0700</date>
            <delta_ts>2012-03-29 10:11:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71063-20120329141139.patch</filename>
            <type>text/plain</type>
            <size>190604</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzA0YWIyNjE3NjQ5ZmVlOTJiNGY2YmUyNWMxZDQ1MTgzODkyZTI3Li4xZmYwZDhhMDkwODFhZGVi
ZTVhN2M5MDdiYzA3NDM5MzI4M2M3ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNo
b3VsZCByZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0
IGluc3RlYWQgb2YgYSBwYWlyLiBOb3RlIHRoYXQgc2luY2UgV2Vha0dDTWFwIHdyYXBzCisgICAg
ICAgIHRoZSBpdGVyYXRvciB0eXBlLCB0aGVyZSdzIGEgbmVlZCBmb3IgaXRzIG93biBBZGRSZXN1
bHQgdHlwZSAtLSBpbnN0YW50aWF0ZWQgZnJvbQorICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQg
dGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNl
dFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VFRodW5rczo6Y3RpU3R1Yik6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9u
U3R1Yik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VTdHJpY3RPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUGFyYW1ldGVyKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAo
SlNDOjpJZGVudGlmaWVyOjphZGQ4KToKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkU2xv
d0Nhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJ
ZGVudGlmaWVyOjphZGQpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlW
YWx1ZU1hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZSk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OmRlZmluZU93bk51bWVyaWNQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgIChTcGFyc2VBcnJheVZhbHVlTWFwKToKKyAgICAgICAgKiBydW50aW1lL1By
b3BlcnR5TmFtZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmFk
ZCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6OmFkZCk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKFdl
YWtHQ01hcCk6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6YWRkKToKKyAgICAgICAgKEpTQzo6
V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oOgorICAg
ICAgICAoSlNDOjpQcm9maWxlVHJlZU5vZGU6OnNhbXBsZUNoaWxkKToKKwogMjAxMi0wMy0yOSAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBm
aXggZm9yICFFTkFCTEUoWUFSUl9KSVQpIGFmdGVyIHIxMTI0NTQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ4MGFiODRkMDc5
NTZmMjUyZjkxYThkNDAwYmU4NDk5NGQ5YzkyYTUuLjFhZTgyNTljMjc5M2QwZTZiMzgzODFlYTU1
YjNkMDQ0NzgwM2QyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDMtMjkgIENhaW8gTWFy
Y2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2ZSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBIYXNoVGFibGU8Pjo6YWRkKCkgYW5kIGRlcml2YXRlIGZ1bmN0aW9ucyByZXR1cm4gYW4gQWRk
UmVzdWx0IHN0cnVjdCBpbnN0ZWFkCisgICAgICAgIG9mIGEgcGFpci4gVGhpcyBzdHJ1Y3QgY29u
dGFpbnMgY29udGFpbnMgJ2l0ZXJhdG9yJyBhbmQgJ2lzTmV3RW50cnknIG1lbWJlcnMsIHRoYXQg
YXJlCisgICAgICAgIG1vcmUgcmVhZGFibGUgYXQgY2FsbHNpdGVzIHRoYW4gcHJldmlvdXMgJ2Zp
cnN0JyBhbmQgJ3NlY29uZCcuCisKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAg
ICAgICAgKEhhc2hDb3VudGVkU2V0KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAq
IHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChIYXNoTWFwKToKKyAgICAgICAgKFdURik6CisgICAg
ICAgIChXVEY6Ojo6c2V0KToKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoSGFz
aFNldCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURik6CisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVBZGRSZXN1bHQ6Okhhc2hU
YWJsZUFkZFJlc3VsdCk6CisgICAgICAgIChIYXNoVGFibGVBZGRSZXN1bHQpOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6YWRk
KToKKyAgICAgICAgKFdURjo6OjphZGQpOgorICAgICAgICAoV1RGOjo6OmFkZFBhc3NpbmdIYXNo
Q29kZSk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChMaXN0SGFzaFNl
dCk6CisgICAgICAgIChXVEY6Ojo6YWRkKToKKyAgICAgICAgKFdURjo6OjppbnNlcnRCZWZvcmUp
OgorICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjo6OnNldCk6CisgICAgICAgICogd3RmL1NwZWN0cnVtLmg6CisgICAgICAgIChXVEY6
OlNwZWN0cnVtOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6SWRlbnRpZmllclRhYmxlOjphZGQpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWRE
YXRhLmg6CisgICAgICAgIChJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAg
ICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKwogMjAxMi0wMy0yOCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1w
bGVtZW50IFBsYXRmb3JtU3RyYXRlZ2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFkNzI0NTNkNzdjZGY1YzQ2
YjMyYjhjN2QwN2Y2YzhlNTdlZWY3MGIuLjAwMjEyZjFjMjIyYTM1NGE5ZmIzZGNhZGZjYzA1ZjA0
NDExNGE0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODMgQEAKKzIwMTItMDMtMjkgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJuIGEgbW9yZSBkZXNjcmlwdGl2
ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9mIGEgcGFpci4gTm8gbmV3IHRl
c3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjo6YWNxdWlyZUxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
T01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hU
YWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RE9NQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c3RhcnRPYmplY3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRlVjhTY3JpcHRP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0
LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVu
dGlmaWVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZhbHVlKToKKyAg
ICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
YWRpb0J1dHRvbkdyb3VwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0
dG9uczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFj
Y3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
T3JEaXNwYXRjaFNjcm9sbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRR
dWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZCk6
CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpkdW1wU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtZU5TKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRp
b24pOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF1YWxpZmllZE5hbWU6OmluaXQpOgorICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjphcHBlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxl
Y3Rvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNl
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OnNldEFycmF5KToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91
cCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnBhZ2VHcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRM
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluYXJ5UHJvcGVydHlMaXN0UGxhbjo6d3JpdGVJbnRlZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlSW50ZWdlckFycmF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNh
Y2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdl
c0ZsdXNoZXI6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldERlcml2ZWRGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplQVRTVVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHlsZUNvbnRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbToKKyAgICAgICAgKFdlYkNvcmVSZXBv
cnRUaHJlYWRWaW9sYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjphZGQpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAoSFRUUEhlYWRl
ck1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRh
dGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAgICAgICAqIHBsdWdpbnMv
d2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkUGVyY2Vu
dEhlaWdodERlc2NlbmRhbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZERlcGVuZGVuY3lPbkZsb3dUaHJl
YWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU1h
cDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjppbXBvcnRJdGVtKToK
KyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUpOgorICAg
ICAgICAqIHhtbC9YUGF0aFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0
aW9uUGF0aDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6VW5pb246OmV2YWx1YXRlKToKKwogMjAxMi0wMy0yOSAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTbmlwcGV0c1NjcmlwdE1hcHBpbmcgc2hvdWxkIHByb2Nlc3MgZXhpc3Rpbmcgc25p
cHBldHMgb24gbG9hZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjk1NDliNWMyMzlm
MmNlMDY3MDA3OGI3ZDgwOTQ4ZDY4OGNhYWE5Ni4uNzk4ODU5NjM5YTk5NDUwMjNjMGYzNmI2MDU3
NjkyNGM4MzNkMzA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2
ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCByZXR1
cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3RlYWQg
b2YgYSBwYWlyLgorCisgICAgICAgICogc3JjL1dlYkhUVFBMb2FkSW5mby5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmFkZEhlYWRlcik6CisgICAgICAgICogc3JjL1dlYlVSTFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMUmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisK
IDIwMTItMDMtMjkgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBJ
bnRyb2R1Y2UgQ1NTUGFyc2VyTW9kZSBpbiBhbGwgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IGIwZTFhYjk2MzA2ZGZlZjQ2NGQ3Y2MwNWMzOGJhODcyYmVmOGJiODQuLjI3MzgxNDM4ODMzODI3
YjU5ZGFiZWNkOGJlNjg4NGI4MmQxMzI5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxMi0wMy0yOSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5v
bGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEhhc2hNYXA8Pjo6YWRkIHNob3VsZCBy
ZXR1cm4gYSBtb3JlIGRlc2NyaXB0aXZlIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY29kZSB0byB1c2UgQWRkUmVzdWx0IGluc3Rl
YWQgb2YgYSBwYWlyLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5I
b3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
cjo6aG9zdEZvclBsdWdpbik6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKToKKyAg
ICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViTm90aWZp
Y2F0aW9uQ2xpZW50OjpzaG93KToKKwogMjAxMi0wMy0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3Vy
Y2UgY2FsbGJhY2ssIHNpbmNlIG5vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggN2QwZGU4Y2NjZjQ0MmIw
MTA2ZWFiMTI1YzgwMDM1YzM4YzU1MjExZC4uYmZiMGYxNGQ0ODRiZjEwNjM5M2RiNjFhMTY4Zjg4
N2MxNmFmOWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTI5
ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hvdWxkIHJldHVybiBhIG1vcmUgZGVz
Y3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQgaW5zdGVhZCBvZiBhIHBhaXIuCisK
KyAgICAgICAgKiBXZWJLaXRDT01BUEkuY3BwOgorICAgICAgICAoY2xhc3NGYWN0b3J5KToKKwog
MjAxMi0wMy0yOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbW92ZSBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UgY2FsbGJhY2ssIHNpbmNlIG5vCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNzI2ODIxZDA5NzQ1ZmI4MzkwN2JiMTU0MGI2ZDljOTY5MTQ2ODMwMS4uZDQ2
YmYwZjE1OWVmOTI1ZTRkNTk3YWYwOTY2MjEyODNmN2YzYmQxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4IEBACisyMDEyLTAzLTI5ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxj
YWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgSGFzaE1hcDw+OjphZGQgc2hv
dWxkIHJldHVybiBhIG1vcmUgZGVzY3JpcHRpdmUgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTA2MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjb2RlIHRvIHVzZSBBZGRSZXN1bHQg
aW5zdGVhZCBvZiBhIHBhaXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRl
KToKKyAgICAgICAgKiBTaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNdXRhYmxlRGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6TXV0YWJsZURp
Y3Rpb25hcnk6OnNldCk6CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRGVjb2Rlcjo6YmFzZURlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL21hYy9Db21tYW5kTGluZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbW1h
bmRMaW5lOjpwYXJzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1Zp
ZXcubW06CisgICAgICAgIChwYWdlRGlkRHJhd1RvUERGKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZh
Y2VJdGVtOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEJhY2tGb3J3YXJkSXRlbSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRP
ckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXApOgorCiAyMDEyLTAzLTI4ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgY3Jh
c2ggYW5kIGFuIGFzc2VydGlvbiB3aGVuIHJlY292ZXJpbmcgZnJvbSBhIHdlYiBwcm9jZXNzIGNy
YXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4
IDYxM2U1MzhiYzc1ZGIzNjlmN2RmZjdiNjc5ODkyY2I3MDJiMzIxMzYuLjlhY2EwYzdlMThjYTVj
Y2NjZWU3MzU5ZWEzOTFjMjgzNGIwYTFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0cnVjdCBKU0NhbGxiYWNr
T2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIHZvaWQgc2V0UHJpdmF0ZVBy
b3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7Ci0gICAgICAgICAgICBtX3Byb3BlcnR5
TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0eSkuZmlyc3QtPnNlY29uZC5zZXQoZ2xv
YmFsRGF0YSwgb3duZXIsIHZhbHVlKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuYWRkKHBy
b3BlcnR5TmFtZS5pbXBsKCksIGVtcHR5KS5pdGVyYXRvci0+c2Vjb25kLnNldChnbG9iYWxEYXRh
LCBvd25lciwgdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRlbGV0
ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRleCA1YzI0OWFiYWY2NWViYmE4OTJm
OWY1MzAzMzRjNWRiYzBkOTViOTlkLi4xMzUzNGQwNzhjNmI5Yjg3ODFmMDk5NmE2YmI5ODhiMzdm
NGRiZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTE2
NCw3ICsxNjQsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YShKU0M6OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQwogCiBPcGFxdWVKU0NsYXNzQ29u
dGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICBPd25QdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCkub3BhcXVlSlNDbGFzc0RhdGEuYWRkKHRoaXMsIG51bGxwdHIpLmZpcnN0
LT5zZWNvbmQ7CisgICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHRE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpLm9wYXF1ZUpTQ2xhc3NEYXRhLmFkZCh0aGlzLCBudWxs
cHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghY29udGV4dERhdGEpCiAgICAgICAgIGNv
bnRleHREYXRhID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMpKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCA0YTZmNDY1M2VhYjg5MmZjNmRhMGRiOTNjYjQ5Y2IxNTcxYTZhZGZiLi4wZjA4
NTc5NTMzNjQwNGM1YTA0ZmExZTdiY2RjMTZhMDI3ZTFmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMjAwLDEwICsyMDAsMTAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29uc3RhbnQsIFJlZ2lzdGUKIHsKICAgICBpbnQg
aW5kZXggPSBtX2NhbGxlZVJlZ2lzdGVycy5zaXplKCk7CiAgICAgU3ltYm9sVGFibGVFbnRyeSBu
ZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7Ci0gICAgcGFpcjxTeW1i
b2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50
LmltcGwoKSwgbmV3RW50cnkpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0g
c3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CiAKLSAgICBpZiAoIXJl
c3VsdC5zZWNvbmQpIHsKLSAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0LmZpcnN0LT5z
ZWNvbmQuZ2V0SW5kZXgoKSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAg
ICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjE1LDkgKzIxNSw5IEBAIGludCBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBi
b29sIGlzQ29uc3RhbnQpCiB7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS5zaXplKCk7
CiAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgaXNDb25zdGFudCA/IFJlYWRP
bmx5IDogMCk7Ci0gICAgcGFpcjxTeW1ib2xUYWJsZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IHN5bWJvbFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwotICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRl
eCgpOworICAgIFN5bWJvbFRhYmxlOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5h
ZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRyeSk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXRJbmRleCgpOwogICAg
IHJldHVybiBpbmRleDsKIH0KIApAQCAtOTY4LDI0ICs5NjgsMjQgQEAgUGFzc1JlZlB0cjxMYWJl
bD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVy
SUQqIGNvbmQKIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBpZGVudC5pbXBsKCk7
Ci0gICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9pZGVu
dGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwot
ICAgIGlmIChyZXN1bHQuc2Vjb25kKSAvLyBuZXcgZW50cnkKKyAgICBJZGVudGlmaWVyTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gbV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIG1fY29kZUJsb2NrLT5u
dW1iZXJPZklkZW50aWZpZXJzKCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihtX2dsb2JhbERhdGEsIHJl
cCkpOwogCi0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZENvbnN0YW50VmFsdWUoSlNWYWx1ZSB2KQogewogICAgIGludCBpbmRleCA9IG1fbmV4dENv
bnN0YW50T2Zmc2V0OwogCi0gICAgcGFpcjxKU1ZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodiksIG1fbmV4dENvbnN0YW50
T2Zmc2V0KTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgeworICAgIEpTVmFsdWVNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVuY29kZSh2KSwgbV9uZXh0
Q29uc3RhbnRPZmZzZXQpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBt
X2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
KyBtX25leHRDb25zdGFudE9mZnNldCk7CiAgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7
CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChKU1ZhbHVlKHYpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgaW5kZXggPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgaW5kZXgg
PSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xS
ZWdpc3RlcnNbaW5kZXhdOwogfQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikK
ICAgICAvLyB3b3JrIGNvcnJlY3RseSB3aXRoIE5hTiBhcyBhIGtleS4KICAgICBpZiAoaXNuYW4o
bnVtYmVyKSB8fCBudW1iZXIgPT0gSGFzaFRyYWl0czxkb3VibGU+OjplbXB0eVZhbHVlKCkgfHwg
SGFzaFRyYWl0czxkb3VibGU+Ojppc0RlbGV0ZWRWYWx1ZShudW1iZXIpKQogICAgICAgICByZXR1
cm4gZW1pdExvYWQoZHN0LCBqc051bWJlcihudW1iZXIpKTsKLSAgICBKU1ZhbHVlJiB2YWx1ZUlu
TWFwID0gbV9udW1iZXJNYXAuYWRkKG51bWJlciwgSlNWYWx1ZSgpKS5maXJzdC0+c2Vjb25kOwor
ICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQobnVtYmVyLCBKU1ZhbHVl
KCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQogICAgICAgICB2YWx1
ZUluTWFwID0ganNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCB2YWx1
ZUluTWFwKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGRvdWJsZSBudW1iZXIpCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1f
c3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBK
U1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgp
LCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApCiAgICAgICAgIHN0
cmluZ0luTWFwID0ganNPd25lZFN0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmlu
ZygpKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0luTWFwKSk7CkBA
IC0xNjQ4LDcgKzE2NDgsNyBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnRCdWZmZXIodW5zaWduZWQgbGVuZ3RoKQogCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAg
SlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwo
KSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJp
bmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlm
ICghc3RyaW5nSW5NYXApIHsKICAgICAgICAgc3RyaW5nSW5NYXAgPSBqc1N0cmluZyhnbG9iYWxE
YXRhKCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKICAgICAgICAgYWRkQ29uc3RhbnRWYWx1ZShz
dHJpbmdJbk1hcCk7CkBAIC0xNzE4LDEwICsxNzE4LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbkJvZHlO
b2RlCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TGF6eU5ld0Z1bmN0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24pCiB7Ci0gICAgc3Rk
OjpwYWlyPEZ1bmN0aW9uT2Zmc2V0TWFwOjppdGVyYXRvciwgYm9vbD4gcHRyID0gbV9mdW5jdGlv
bk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAwKTsKLSAgICBpZiAocHRyLnNlY29uZCkKLSAgICAgICAg
cHRyLmZpcnN0LT5zZWNvbmQgPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0aW9uKSk7Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlv
bkludGVybmFsKGRzdCwgcHRyLmZpcnN0LT5zZWNvbmQsIHRydWUpOworICAgIEZ1bmN0aW9uT2Zm
c2V0TWFwOjpBZGRSZXN1bHQgcHRyID0gbV9mdW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAw
KTsKKyAgICBpZiAocHRyLmlzTmV3RW50cnkpCisgICAgICAgIHB0ci5pdGVyYXRvci0+c2Vjb25k
ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24obV9nbG9iYWxEYXRh
LCBmdW5jdGlvbikpOworICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIHB0
ci5pdGVyYXRvci0+c2Vjb25kLCB0cnVlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQg
aW5kZXgsIGJvb2wgZG9OdWxsQ2hlY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmI5NWNhZmI2ODI2M2E5YmY1MTBh
YTRlNDIyN2Y1ZWE0M2EzZWU5OC4uY2Q5ZGUyMmYwNTk4Nzk4ZTI3YjI3NzFiOWI4N2U0NTEzNmE5
NzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMjU2LDkgKzI1Niw5IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEdldHRlclNldHRlclBh
aXIgcGFpcihub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPigwKSk7Ci0gICAgICAgICAg
ICBzdGQ6OnBhaXI8R2V0dGVyU2V0dGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbWFw
LmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC5zZWNvbmQgPSBu
b2RlOworICAgICAgICAgICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFw
LmFkZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuc2Vj
b25kID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVt
YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCA0NDFjOWFlZDMzMWM4YjNlYjhkNzYyMzQwY2JhOTM1
MzRkYzUzNGVhLi5lZGU4YTliYTI0OGI5YTg5NGI3OTE3NGVkNWQzMjBmODhmNWNjYjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgaW5saW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCiAK
ICAgICAvLyBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgc2V0IC0gaWYg
c28sCiAgICAgLy8gd2UndmUgYWxyZWFkeSByZXRyYW5zbGF0ZWQgaXQsIG5vdGhpbmcgdG8gZG8g
aGVyZS4KLSAgICBpZiAoIW1fZnVuY3Rpb25FeGVjdXRhYmxlcy5hZGQoZXhlY3V0YWJsZSkuc2Vj
b25kKQorICAgIGlmICghbV9mdW5jdGlvbkV4ZWN1dGFibGVzLmFkZChleGVjdXRhYmxlKS5pc05l
d0VudHJ5KQogICAgICAgICByZXR1cm47CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5KU0dsb2JhbE9iamVjdDo6Z2xvYmFsRXhlYygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCmlu
ZGV4IDk2OTEwMWU4N2M1MzhjOTVkMTdkMTY1MWFlMmFjNWQ2ZDM2YjI1OWQuLmFjMmMzZGIyMWNm
NzRhMWE0ZDY0YjQ2ODlmZjE2ZmVmZTdiZDFlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29k
ZU1hcEZvcihDb2RlQmxvY2sqCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRDb2RlTWFw
KCkpOwogICAgIAotICAgIHN0ZDo6cGFpcjxIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2RlY29k
ZWRDb2RlTWFwcy5hZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
PigpKTsKKyAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29kZUJs
b2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKICAgICAKLSAgICBpZiAo
cmVzdWx0LnNlY29uZCkKLSAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
KTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA5Mjg1MDU2M2FlZDUxMTUzOTdjYWM4YTQyMjc1OGIwNzRiODZhNGEzLi5mMGRhNmNjMDFiNzBl
ODc5YmI5MDk3OGM4YmE4NzA2ZmFkODY4ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTUxLDExICs1NTEsMTEgQEAgcHJpdmF0
ZToKICAgICAKICAgICBOb2RlSW5kZXggY2VsbENvbnN0YW50KEpTQ2VsbCogY2VsbCkKICAgICB7
Ci0gICAgICAgIHBhaXI8SGFzaE1hcDxKU0NlbGwqLCBOb2RlSW5kZXg+OjppdGVyYXRvciwgYm9v
bD4gaXRlciA9IG1fY2VsbENvbnN0YW50Tm9kZXMuYWRkKGNlbGwsIE5vTm9kZSk7Ci0gICAgICAg
IGlmIChpdGVyLnNlY29uZCkKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IGFkZFRv
R3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhjZWxsKSk7CisgICAgICAgIEhhc2hNYXA8SlND
ZWxsKiwgTm9kZUluZGV4Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2VsbENvbnN0YW50Tm9kZXMu
YWRkKGNlbGwsIE5vTm9kZSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFrSlNDb25zdGFu
dCwgT3BJbmZvKGNlbGwpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBpdGVyLmZpcnN0LT5z
ZWNvbmQ7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAg
ICAgCiAgICAgQ29kZU9yaWdpbiBjdXJyZW50Q29kZU9yaWdpbigpCkBAIC0yNTk1LDEwICsyNTk1
LDEwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlCiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsgKytpKSB7CiAgICAgICAg
ICAgICBTdHJpbmdJbXBsKiByZXAgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIoaSkuaW1wbCgpOwot
ICAgICAgICAgICAgcGFpcjxJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
Ynl0ZUNvZGVQYXJzZXItPm1faWRlbnRpZmllck1hcC5hZGQocmVwLCBieXRlQ29kZVBhcnNlci0+
bV9jb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgICAgICAgICBpZiAocmVz
dWx0LnNlY29uZCkKKyAgICAgICAgICAgIElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBieXRlQ29kZVBhcnNlci0+bV9pZGVudGlmaWVyTWFwLmFkZChyZXAsIGJ5dGVDb2RlUGFyc2Vy
LT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpKTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2Rl
QmxvY2stPmFkZElkZW50aWZpZXIoSWRlbnRpZmllcihieXRlQ29kZVBhcnNlci0+bV9nbG9iYWxE
YXRhLCByZXApKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllclJlbWFwW2ldID0gcmVzdWx0LmZp
cnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7ICsraSkgewogICAgICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay0+Z2V0Q29uc3RhbnQoaSArIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4KTsKQEAgLTI2MTEsMTIgKzI2MTEsMTIgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5
dGVDb2RlUGFyc2UKICAgICAgICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSBieXRlQ29k
ZVBhcnNlci0+bV9lbXB0eUpTVmFsdWVJbmRleDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhaXI8SlNWYWx1ZU1hcDo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IGJ5dGVDb2RlUGFyc2VyLT5tX2pzVmFsdWVNYXAuYWRkKEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZSksIGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFu
dFJlZ2lzdGVycygpICsgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgICAgIEpTVmFsdWVNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBieXRlQ29kZVBhcnNlci0+bV9qc1ZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUo
dmFsdWUpLCBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdp
c3RlcnMoKSArIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2Nv
ZGVCbG9jay0+YWRkQ29uc3RhbnQodmFsdWUpOwogICAgICAgICAgICAgICAgIGJ5dGVDb2RlUGFy
c2VyLT5tX2NvbnN0YW50cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbGxzaXRlQmxvY2tIZWFkTmVlZHNM
aW5raW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXgg
OWFlMzJjNGIwZGUyYjY5ZTMzMWE1OGFkZmM0MGU0MTUxY2EyZmE5MC4uODJmNmRmN2QxMmE4ZWYy
NzQ0MDU1MTZkZTY2YzU1MzYzOGI0ZmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKQEAgLTM1NTgsMjQgKzM1NTgsMjQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIHRvX29iamVjdCkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIEpJVFRodW5r
czo6Y3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFRodW5rR2VuZXJhdG9yIGdlbmVy
YXRvcikKIHsKLSAgICBzdGQ6OnBhaXI8Q1RJU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5
ID0gbV9jdGlTdHViTWFwLmFkZChnZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpKTsK
LSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAgICBlbnRyeS5maXJzdC0+c2Vjb25kID0gZ2Vu
ZXJhdG9yKGdsb2JhbERhdGEpOwotICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kOworICAg
IENUSVN0dWJNYXA6OkFkZFJlc3VsdCBlbnRyeSA9IG1fY3RpU3R1Yk1hcC5hZGQoZ2VuZXJhdG9y
LCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKSk7CisgICAgaWYgKGVudHJ5LmlzTmV3RW50cnkpCisg
ICAgICAgIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQgPSBnZW5lcmF0b3IoZ2xvYmFsRGF0YSk7Cisg
ICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUq
IEpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcikKIHsKLSAg
ICBzdGQ6OnBhaXI8SG9zdEZ1bmN0aW9uU3R1Yk1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVj
dXRhYmxlPigpKTsKLSAgICBpZiAoIXJlc3VsdC5maXJzdC0+c2Vjb25kKQotICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRh
LCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNUSU5h
dGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkpLCBj
b25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNv
bmQuZ2V0KCk7CisgICAgSG9zdEZ1bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVjdXRh
YmxlPigpKTsKKyAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKQorICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxE
YXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIEpJVDo6Y29tcGlsZUNU
SU5hdGl2ZUNhbGwoZ2xvYmFsRGF0YSwgZnVuY3Rpb24pLCBmdW5jdGlvbiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoY3RpTmF0aXZlQ29uc3RydWN0KCkp
LCBjb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQuZ2V0KCk7CiB9CiAKIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7Ci0g
ICAgc3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBQYXNzV2VhazxOYXRpdmVFeGVj
dXRhYmxlPigpKTsKLSAgICBpZiAoISplbnRyeS5maXJzdC0+c2Vjb25kKSB7CisgICAgSG9zdEZ1
bmN0aW9uU3R1Yk1hcDo6QWRkUmVzdWx0IGVudHJ5ID0gbV9ob3N0RnVuY3Rpb25TdHViTWFwLT5h
ZGQoZnVuY3Rpb24sIFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCkpOworICAgIGlmICghKmVu
dHJ5Lml0ZXJhdG9yLT5zZWNvbmQpIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNv
ZGU7CiAgICAgICAgIGlmIChnZW5lcmF0b3IpIHsKICAgICAgICAgICAgIGlmIChnbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSkKQEAgLTM1ODQsOSArMzU4NCw5IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJ
VFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIE5hdGl2
ZUZ1CiAgICAgICAgICAgICAgICAgY29kZSA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxs
KGdsb2JhbERhdGEsIGZ1bmN0aW9uKTsKLSAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZCA9IFBh
c3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRpdmVFeGVjdXRhYmxlOjpj
cmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY6
OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1Y3QoKSksIGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKKyAgICAgICAgZW50cnkuaXRlcmF0
b3ItPnNlY29uZCA9IFBhc3NXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+KCpnbG9iYWxEYXRhLCBOYXRp
dmVFeGVjdXRhYmxlOjpjcmVhdGUoKmdsb2JhbERhdGEsIGNvZGUsIGZ1bmN0aW9uLCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVDb25zdHJ1
Y3QoKSksIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBpbnRyaW5zaWMpKTsKICAgICB9
Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIGVudHJ5
Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgSklUVGh1bmtzOjpjbGVhckhvc3RG
dW5jdGlvblN0dWJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCBmNTg4NDdmZDI0Njc4ZjJmMjUyYzM1MWI1ZDhkM2JlOWU1MzVhYjcyLi42OTQzOTc3YTg1YTZm
ZjdjOTExYTcyYTRjODM5YjY5YzFkNzQzOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2Jq
ZWN0CiAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKICAg
ICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFk
eVZhbGlkYXRlZCkgewotICAgICAgICAgICAgc3RkOjpwYWlyPE9iamVjdFZhbGlkYXRpb25NYXA6
Oml0ZXJhdG9yLCBib29sPiBwcm9wZXJ0eUVudHJ5SXRlciA9IG9iamVjdFZhbGlkYXRvci5hZGQo
Y29udGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkpOwotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5SXRlci5zZWNvbmQpIHsKLSAgICAg
ICAgICAgICAgICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnlJdGVyLmZpcnN0LT5zZWNvbmQgPT0g
UHJvcGVydHlOb2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICBPYmplY3RWYWxpZGF0aW9uTWFw
OjpBZGRSZXN1bHQgcHJvcGVydHlFbnRyeSA9IG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5n
ZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOworICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eUVudHJ5LmlzTmV3RW50cnkpIHsKKyAgICAgICAgICAgICAg
ICBmYWlsSWZUcnVlKHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCA9PSBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KTsKICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGNvbnRleHQuZ2V0VHlw
ZShwcm9wZXJ0eSkgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAgICAgICAg
ZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICYgcHJvcGVydHlFbnRyeUl0ZXIu
Zmlyc3QtPnNlY29uZCk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeUl0ZXIuZmlyc3Qt
PnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOworICAgICAgICAgICAgICAgIGZh
aWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSAmIHByb3BlcnR5RW50cnkuaXRlcmF0
b3ItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vj
b25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDc1MTNkMWYxMWZkNDg5NTgyOGFmOGNhZWJlODBhZGExNWI1ZjU3Zjku
LjY4YTY5M2EzZTllZGUyYTk3OGU3ZjgxNTY0MTNkYjM4ZWNhY2E5NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgYm9vbCBkZWNsYXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAg
IHsKICAgICAgICAgYm9vbCBpc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzID09ICppZGVudDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9
IG1fZGVjbGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5zZWNvbmQg
JiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAhaXNBcmd1
bWVudHM7CisgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFi
bGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSkuaXNOZXdFbnRyeSAmJiBtX2dsb2JhbERh
dGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3VtZW50czsKICAgICAg
ICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0
cmljdE1vZGU7CiAgICAgICAgIGlmIChpc0FyZ3VtZW50cykKICAgICAgICAgICAgIHNldEZsYWdz
KFNoYWRvd3NBcmd1bWVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5jcHAKaW5kZXggZmJjNTc4N2NlNjU3MmE4ZDg0ZDdjMDRiZjgyMzE3ZjU4NDgw
NmI2My4uMTgyYmNjNDYyMDIyYjRlYzJjYmFjNjg1NWM1MDI5ZjY0YzcxMWZmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKQEAgLTExMCwxMSArMTEw
LDExIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogYykKICAgICBpZiAoaXRlciAhPSBsaXRlcmFsSWRl
bnRpZmllclRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogCi0gICAg
cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGlk
ZW50aWZpZXJUYWJsZS5hZGQ8Y29uc3QgTENoYXIqLCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0
b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7CisgICAgSGFzaFNldDxTdHJp
bmdJbXBsKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBpZGVudGlmaWVyVGFibGUuYWRkPGNvbnN0
IExDaGFyKiwgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yPihyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oYykpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFuc2xh
dGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhl
IHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
ZWRTdHJpbmcgPSBhZGRSZXN1bHQuc2Vjb25kID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkg
OiAqYWRkUmVzdWx0LmZpcnN0OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGRlZFN0cmluZyA9
IGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5pdGVyYXRvcikgOiAq
YWRkUmVzdWx0Lml0ZXJhdG9yOwogCiAgICAgbGl0ZXJhbElkZW50aWZpZXJUYWJsZS5hZGQoYywg
YWRkZWRTdHJpbmcuZ2V0KCkpOwogCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBVQ2hhciogcwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKICAgICBDaGFyQnVmZmVyPFVDaGFyPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAg
cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGds
b2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yID4oYnVmKTsKKyAgICBIYXNoU2V0PFN0cmluZ0lt
cGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+
YWRkPENoYXJCdWZmZXI8VUNoYXI+LCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9y
ID4oYnVmKTsKICAgICAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQs
IHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFp
ciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgotICAgIHJldHVybiBhZGRSZXN1bHQuc2Vjb25kID8g
YWRvcHRSZWYoKmFkZFJlc3VsdC5maXJzdCkgOiAqYWRkUmVzdWx0LmZpcnN0OworICAgIHJldHVy
biBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDog
KmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgpA
QCAtMjEwLDcgKzIxMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
U2xvd0Nhc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgcmV0dXJuICpnbG9iYWxEYXRhLT5pZGVudGlmaWVy
VGFibGUtPmFkZChyKS5maXJzdDsKKyAgICByZXR1cm4gKmdsb2JhbERhdGEtPmlkZW50aWZpZXJU
YWJsZS0+YWRkKHIpLml0ZXJhdG9yOwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IElkZW50
aWZpZXI6OmFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiOWU1YTE4NTQ0OTIz
OTc4NzQ2MDI5MmEyMmVhYjM1MmJmN2I4ZTIyLi4xNDk2MDg3NmI2ZjU4ZDg2N2I5YTVlMzgyNzVj
ZWQwNmMyYWNlNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCkBAIC0xNzgsMTEgKzE3OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICAgICAg
Q2hhckJ1ZmZlcjxUPiBidWYgPSB7cywgbGVuZ3RofTsgCi0gICAgICAgIHBhaXI8SGFzaFNldDxT
dHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnbG9iYWxEYXRhLT5pZGVu
dGlmaWVyVGFibGUtPmFkZDxDaGFyQnVmZmVyPFQ+LCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5z
bGF0b3I8VD4gPihidWYpOworICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8
VD4sIElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPiA+KGJ1Zik7CiAgICAgICAgIAog
ICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVl
ZCB0byBhZG9wdCBpdC4KICAgICAgICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMg
dXMgaWYgdGhhdCBpcyBzby4KLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5zZWNvbmQgPyBhZG9w
dFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7CisgICAgICAgIHJldHVy
biBhZGRSZXN1bHQuaXNOZXdFbnRyeSA/IGFkb3B0UmVmKCphZGRSZXN1bHQuaXRlcmF0b3IpIDog
KmFkZFJlc3VsdC5pdGVyYXRvcjsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCkBAIC0yNDYsMTAgKzI0
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBpbnQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxTdHJpbmdJ
bXBsPiA+LCBJZGVudGlmaWVyTWFwSW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBzdGQ6OnBhaXI8SGFzaFNl
dDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBJZGVudGlmaWVyVGFibGU6OmFkZChVIHZh
bHVlKQorICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgSWRlbnRpZmllclRhYmxl
OjphZGQoVSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0lt
cGwqPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsK
LSAgICAgICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWJsZS5hZGQ8VSwg
Vj4odmFsdWUpOworICAgICAgICAoKnJlc3VsdC5pdGVyYXRvciktPnNldElzSWRlbnRpZmllcih0
cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMmM2MjBiNGFlNTg5ZDFlYzllNmY0NzY5MmU0
NDZjZmE4NTYzZDQwMS4uMGZmYTA3NmNlYWYwOTYwNGZhYmFiYzBmNjk1N2MxNTZmMWYxYWUzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTE5NSwxMCAr
MTk1LDEwIEBAIHZvaWQgSlNBcnJheTo6ZmluYWxpemUoSlNDZWxsKiBjZWxsKQogICAgIHRoaXNP
YmplY3QtPmRlYWxsb2NhdGVTcGFyc2VNYXAoKTsKIH0KIAotaW5saW5lIHN0ZDo6cGFpcjxTcGFy
c2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciwgYm9vbD4gU3BhcnNlQXJyYXlWYWx1ZU1hcDo6YWRk
KEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpKQoraW5saW5lIFNwYXJzZUFycmF5VmFsdWVNYXA6
OkFkZFJlc3VsdCBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXksIHVuc2ln
bmVkIGkpCiB7CiAgICAgU3BhcnNlQXJyYXlFbnRyeSBlbnRyeTsKLSAgICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CisgICAgQWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLmFkZChpLCBlbnRyeSk7CiAgICAgc2l6ZV90IGNhcGFjaXR5ID0gbV9t
YXAuY2FwYWNpdHkoKTsKICAgICBpZiAoY2FwYWNpdHkgIT0gbV9yZXBvcnRlZENhcGFjaXR5KSB7
CiAgICAgICAgIEhlYXA6OmhlYXAoYXJyYXkpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoKGNhcGFj
aXR5IC0gbV9yZXBvcnRlZENhcGFjaXR5KSAqIChzaXplb2YodW5zaWduZWQpICsgc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpKTsKQEAgLTIwOSwxNCArMjA5LDE0IEBAIGlubGluZSBzdGQ6
OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IFNwYXJzZUFycmF5VmFs
dWVNYXA6OmFkZChKCiAKIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVj
U3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93KQogewotICAgIHN0ZDo6cGFpcjxTcGFyc2VBcnJheVZhbHVlTWFwOjpp
dGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVu
dHJ5JiBlbnRyeSA9IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFkZFJlc3VsdCByZXN1bHQg
PSBhZGQoYXJyYXksIGkpOworICAgIFNwYXJzZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICAvLyBUbyBzYXZlIGEgc2VwYXJhdGUgZmluZCAmIGFkZCwg
d2UgZmlyc3QgYWx3YXlzIGFkZCB0byB0aGUgc3BhcnNlIG1hcC4KICAgICAvLyBJbiB0aGUgdW5j
b21tb24gY2FzZSB0aGF0IHRoaXMgaXMgYSBuZXcgcHJvcGVydHksIGFuZCB0aGUgYXJyYXkgaXMg
bm90CiAgICAgLy8gZXh0ZW5zaWJsZSwgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHRoaW5nIHRvIGhh
dmUgZG9uZSAtIHNvIHJlbW92ZSBhZ2Fpbi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCAmJiAhYXJy
YXktPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAgIHJlbW92ZShyZXN1bHQuZmlyc3QpOworICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAg
ICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBpbmxp
bmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5
KiBhcnJheSwgdW5zaWduZWQgaQogCiBpbmxpbmUgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpw
dXREaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKLSAgICBzdGQ6OnBhaXI8U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7Ci0gICAg
U3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBBZGRS
ZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKKyAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRy
eSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8gc2F2ZSBhIHNlcGFyYXRl
IGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNwYXJzZSBtYXAuCiAgICAg
Ly8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3IHByb3BlcnR5LCBhbmQg
dGhlIGFycmF5IGlzIG5vdAogICAgIC8vIGV4dGVuc2libGUsIHRoaXMgaXMgbm90IHRoZSByaWdo
dCB0aGluZyB0byBoYXZlIGRvbmUgLSBzbyByZW1vdmUgYWdhaW4uCi0gICAgaWYgKHJlc3VsdC5z
ZWNvbmQgJiYgIWFycmF5LT5pc0V4dGVuc2libGUoKSkgewotICAgICAgICByZW1vdmUocmVzdWx0
LmZpcnN0KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYgIWFycmF5LT5pc0V4dGVuc2li
bGUoKSkgeworICAgICAgICByZW1vdmUocmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJu
IHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5
IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgIH0KIApAQCAtMzU1LDcg
KzM1NSw3IEBAIHZvaWQgSlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBhbHdheXMgYmUgYSBuZXcgZW50cnkg
aW4gdGhlIG1hcCwgc28gbm8gbmVlZCB0byBjaGVjayB3ZSBjYW4gd3JpdGUsCiAgICAgICAgIC8v
IGFuZCBhdHRyaWJ1dGVzIGFyZSBkZWZhdWx0IHNvIG5vIG5lZWQgdG8gc2V0IHRoZW0uCiAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkpLmZpcnN0LT5zZWNv
bmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIG1hcC0+YWRkKHRo
aXMsIGkpLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsKICAg
ICB9CiAKICAgICB2b2lkKiBuZXdSYXdTdG9yYWdlID0gMDsKQEAgLTQzMCwxNSArNDMwLDE1IEBA
IGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duTnVtZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaW5kZXgsIFByb3BlcnR5CiAgICAgQVNTRVJUKG1hcCk7CiAKICAgICAvLyAxLiBM
ZXQgY3VycmVudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHld
XSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIHByb3BlcnR5IG5hbWUgUC4KLSAgICBzdGQ6OnBh
aXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC0+YWRk
KHRoaXMsIGluZGV4KTsKLSAgICBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUluTWFwID0gJnJlc3Vs
dC5maXJzdC0+c2Vjb25kOworICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7CisgICAgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJ
bk1hcCA9ICZyZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIC8vIDIuIExldCBleHRlbnNp
YmxlIGJlIHRoZSB2YWx1ZSBvZiB0aGUgW1tFeHRlbnNpYmxlXV0gaW50ZXJuYWwgcHJvcGVydHkg
b2YgTy4KICAgICAvLyAzLiBJZiBjdXJyZW50IGlzIHVuZGVmaW5lZCBhbmQgZXh0ZW5zaWJsZSBp
cyBmYWxzZSwgdGhlbiBSZWplY3QuCiAgICAgLy8gNC4gSWYgY3VycmVudCBpcyB1bmRlZmluZWQg
YW5kIGV4dGVuc2libGUgaXMgdHJ1ZSwgdGhlbgotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKCkp
IHsKLSAgICAgICAgICAgIG1hcC0+cmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgICAgICAgICBt
YXAtPnJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHJlamVjdChl
eGVjLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9i
amVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBhZDk4ZDY2MTkwYjAzY2E1NWM4NGEwMjhj
NDg5MzAyYjUxYjE4YjliLi44OTBmZGY0ZjBhMDk0NGU1ODRiNjZmMWY2NGUzNTgxM2M5NzI0MzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC01NSw2ICs1NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBNYXA6Oml0
ZXJhdG9yIGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIE1hcDo6Y29uc3RfaXRlcmF0b3IgY29u
c3RfaXRlcmF0b3I7CisgICAgICAgIHR5cGVkZWYgTWFwOjpBZGRSZXN1bHQgQWRkUmVzdWx0Owog
CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAoKQogICAgICAgICAgICAgOiBtX2ZsYWdzKE5v
cm1hbCkKQEAgLTg3LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFRoZXNl
IG1ldGhvZHMgbWF5IG11dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAogICAgICAgICB2b2lk
IHB1dChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5z
aWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgICAgICBzdGQ6OnBhaXI8aXRl
cmF0b3IsIGJvb2w+IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOworICAgICAgICBBZGRSZXN1bHQg
YWRkKEpTQXJyYXkqLCB1bnNpZ25lZCk7CiAgICAgICAgIGl0ZXJhdG9yIGZpbmQodW5zaWduZWQg
aSkgeyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQogICAgICAgICAvLyBUaGlzIHNob3VsZCBBU1NF
UlQgdGhlIHJlbW92ZSBpcyB2YWxpZCAoY2hlY2sgdGhlIHJlc3VsdCBvZiB0aGUgZmluZCkuCiAg
ICAgICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yIGl0KSB7IG1fbWFwLnJlbW92ZShpdCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNw
cAppbmRleCA4ZWZiNDA2NWUxNzM5Y2YwNWQ1ZDkxNjZjNzViZWNkODBkZGUzMGZjLi45YmFlOTQw
OTc0MDA4NTJhY2EwYzAzZjRiNzllNDI1YmI0YzMzMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAg
ICAgICAgbV9zZXQuYWRkKG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV0uaW1wbCgpKTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5zZWNvbmQpCisg
ICAgICAgIGlmICghbV9zZXQuYWRkKGlkZW50aWZpZXIpLmlzTmV3RW50cnkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKaW5kZXggZTM0MDhiMDhiYjI2YWM5NDhmNzdj
NzVmMmEzODE0MTcwODY3ZDQ0MS4uMTI3ZDAyOGUwZjU0MmYyOWI5YTgwY2FhOGI3MTFmMjY2YjQ5
YTU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIuaApAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJp
bmdSZWN1cnNpb25DaGVja2VyOjpwZXJmb3JtQ2hlY2soKQogICAgIGludCBzaXplID0gbV9leGVj
LT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5zaXplKCk7
CiAgICAgaWYgKHNpemUgPj0gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggJiYgc2l6ZSA+PSBt
X2V4ZWMtPmdsb2JhbERhdGEoKS5tYXhSZWVudHJ5RGVwdGgpCiAgICAgICAgIHJldHVybiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcigpOwotICAgIGJvb2wgYWxyZWFkeVZpc2l0ZWQgPSAhbV9leGVj
LT5nbG9iYWxEYXRhKCkuc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5hZGQobV90
aGlzT2JqZWN0KS5zZWNvbmQ7CisgICAgYm9vbCBhbHJlYWR5VmlzaXRlZCA9ICFtX2V4ZWMtPmds
b2JhbERhdGEoKS5zdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzLmFkZChtX3RoaXNP
YmplY3QpLmlzTmV3RW50cnk7CiAgICAgaWYgKGFscmVhZHlWaXNpdGVkKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgLy8gUmV0dXJuIGVtcHR5IHN0cmluZyB0byBhdm9pZCBpbmZpbml0
ZSByZWN1cnNpb24uCiAgICAgcmV0dXJuIEpTVmFsdWUoKTsgLy8gSW5kaWNhdGUgc3VjY2Vzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDZlZTQx
OWRhNmE3OGY4MTI2NmJlZTJkNmE0YWY1YzU2ZDllZDk3NTMuLjUyZWIxYzc0OGQzNDcwNTUyMzAx
Y2FlNWUwMzIxNjQ5NDM3YTY3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlOjphZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHMKICAgICAvLyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4gc3RkOjptYWtlX3Bh
aXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBydmFsdWUgcmVmZXJlbmNlcy4KICAgICAvLyBXaGVuIGVp
dGhlciBvZiB0aGUgcGFyYW1ldGVycyBhcmUgYml0ZmllbGRzLCB0aGUgQysrIGNvbXBpbGVyIHdp
bGwgdHJ5IHRvIGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3aGljaCBpcyBpbnZhbGlkLiBUbyB3b3Jr
IGFyb3VuZCB0aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1ha2UgdGhlIHBhcmFtZXRlciBhbiBydmFs
dWUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTI2MSBmb3IgbW9yZSBkZXRhaWxzCi0gICAgc3RkOjpwYWlyPFRyYW5zaXRpb25NYXA6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFpcihzdHJ1
Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlv
dXMpLCBzdHJ1Y3R1cmUpOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgIFRyYW5zaXRp
b25NYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAoKS0+YWRkKGdsb2JhbERhdGEsIG1ha2VfcGFp
cihzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlvdXMsICtzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0lu
UHJldmlvdXMpLCBzdHJ1Y3R1cmUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgLy8gVGhlcmUgYWxyZWFkeSBpcyBhbiBlbnRyeSEgLSB3ZSBzaG91bGQgb25seSBoaXQg
dGhpcyB3aGVuIGRlc3BlY2lmeWluZy4KLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC5nZXQo
KS5zZWNvbmQtPm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBBU1NFUlQocmVz
dWx0Lml0ZXJhdG9yLmdldCgpLnNlY29uZC0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAg
ICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsKLSAg
ICAgICAgbWFwKCktPnNldChyZXN1bHQuZmlyc3QsIHN0cnVjdHVyZSk7CisgICAgICAgIG1hcCgp
LT5zZXQocmVzdWx0Lml0ZXJhdG9yLCBzdHJ1Y3R1cmUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAppbmRleCAxYmIzY2Q1YmIzZDliZTk2Nzgz
MTI5ZThlNWFlMjEzMGQyZThiZjc4Li5mMDFhMGM4MjZiMWM0N2Y3NzRiYTM3MWIzMzJjNmFlM2Q3
NGJjODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAt
NzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgIG1hcF9pdGVyYXRvciBtX2l0ZXJhdG9yOwog
ICAgIH07CiAKKyAgICB0eXBlZGVmIFdURjo6SGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBB
ZGRSZXN1bHQ7CisKICAgICBXZWFrR0NNYXAoKQogICAgIHsKICAgICB9CkBAIC0xMjEsMTcgKzEy
MywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAgICB9CiAK
LSAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBLZXlUeXBlJiBrZXksIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICBBZGRSZXN1bHQgYWRk
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgS2V5VHlwZSYga2V5LCBFeHRlcm5hbFR5
cGUgdmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9y
LCBib29sPiBpdGVyID0gbV9tYXAuYWRkKGtleSwgMCk7Ci0gICAgICAgIGlmIChpdGVyLnNlY29u
ZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAu
YWRkKGtleSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAg
ICAgSGFuZGxlU2xvdCBzbG90ID0gZ2xvYmFsRGF0YS5oZWFwLmhhbmRsZUhlYXAoKS0+YWxsb2Nh
dGUoKTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNlY29uZCA9IHNsb3Q7CisgICAgICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7CiAgICAgICAgICAgICBIYW5kbGVIZWFw
OjpoZWFwRm9yKHNsb3QpLT5tYWtlV2VhayhzbG90LCB0aGlzLCBGaW5hbGl6ZXJDYWxsYmFjazo6
ZmluYWxpemVyQ29udGV4dEZvcihrZXkpKTsKICAgICAgICAgICAgIEhhbmRsZUhlYXA6OmhlYXBG
b3Ioc2xvdCktPndyaXRlQmFycmllcihzbG90LCB2YWx1ZSk7CiAgICAgICAgICAgICAqc2xvdCA9
IHZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBpdGVyOworICAgICAgICAvLyBXZWFr
R0NNYXAgZXhwb3NlcyBhIGRpZmZlcmVudCBpdGVyYXRvciwgc28gd2UgbmVlZCB0byB3cmFwIGl0
IGFuZCBjcmVhdGUgb3VyIG93biBBZGRSZXN1bHQuCisgICAgICAgIHJldHVybiBBZGRSZXN1bHQo
aXRlcmF0b3IocmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIHNldChpdGVyYXRvciBpdGVyLCBFeHRlcm5hbFR5cGUgdmFsdWUpCkBAIC0x
NDQsMTIgKzE0NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IEtleVR5cGUmIGtleSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIHsK
LSAgICAgICAgcGFpcjx0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1f
bWFwLmFkZChrZXksIDApOwotICAgICAgICBIYW5kbGVTbG90IHNsb3QgPSBpdGVyLmZpcnN0LT5z
ZWNvbmQ7Ci0gICAgICAgIGlmIChpdGVyLnNlY29uZCkgeworICAgICAgICB0eXBlbmFtZSBNYXBU
eXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgMCk7CisgICAgICAgIEhhbmRs
ZVNsb3Qgc2xvdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgIHNsb3QgPSBnbG9iYWxEYXRhLmhlYXAuaGFuZGxl
SGVhcCgpLT5hbGxvY2F0ZSgpOwogICAgICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90
KS0+bWFrZVdlYWsoc2xvdCwgdGhpcywga2V5KTsKLSAgICAgICAgICAgIGl0ZXIuZmlyc3QtPnNl
Y29uZCA9IHNsb3Q7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHNsb3Q7
CiAgICAgICAgIH0KICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJy
aWVyKHNsb3QsIHZhbHVlKTsKICAgICAgICAgKnNsb3QgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9Qcm9maWxlVHJlZU5vZGUuaAppbmRleCA2MGQ1OTkyOGE0NjdhNjE3
ZTJmM2E3ODFlYmUyMDA1MTVlMzZkOTAwLi45ZGUzOWFkOGEyOTg2MjJjNDMzYTY3ZWI2NGE3MjIw
NGRlMTllNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmls
ZVRyZWVOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Byb2ZpbGVUcmVl
Tm9kZS5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2hpbGRyZW4g
PSBuZXcgTWFwKCk7CiAgICAgCiAgICAgICAgIFByb2ZpbGVUcmVlTm9kZSBuZXdFbnRyeTsKLSAg
ICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NoaWxkcmVuLT5hZGQo
U3RyaW5nKG5hbWUpLCBuZXdFbnRyeSk7Ci0gICAgICAgIFByb2ZpbGVUcmVlTm9kZSogY2hpbGRJ
bk1hcCA9ICZyZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOworICAgICAgICBQ
cm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgICsrY2hpbGRJbk1hcC0+bV9jb3VudDsKICAgICAgICAgcmV0dXJuIGNoaWxkSW5NYXA7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKaW5kZXggY2FmYjI2NDllYjYyNDcxYWNjOTZm
NGNmMzc4OWVjMDQ5ZDc0MDBlZS4uZDdkOWU0M2E5YTU1YTFmZGZhODgzZjc4OTdhMTA3Nzk5YTVj
ZmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsKICAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOworICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogICAgICAg
ICAKICAgICAgICAgSGFzaENvdW50ZWRTZXQoKSB7fQogICAgICAgICAKQEAgLTU3LDcgKzU4LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIEluY3JlYXNlcyB0aGUgY291bnQgaWYgYW4g
ZXF1YWwgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHRoZSByZXR1cm4gdmFs
dWUgaXMgYSBwYWlyIG9mIGFuIGludGVyYXRvciB0byB0aGUgbmV3IHZhbHVlJ3MgCiAgICAgICAg
IC8vIGxvY2F0aW9uLCBhbmQgYSBib29sIHRoYXQgaXMgdHJ1ZSBpZiBhbiBuZXcgZW50cnkgd2Fz
IGFkZGVkLgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1
ZVR5cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFJlZHVjZXMgdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSwgYW5kIHJlbW92
ZXMgaXQgaWYgY291bnQKICAgICAgICAgLy8gZ29lcyBkb3duIHRvIHplcm8sIHJldHVybnMgdHJ1
ZSBpZiB0aGUgdmFsdWUgaXMgcmVtb3ZlZC4KQEAgLTE0MiwxMCArMTQzLDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSBzdGQ6OnBhaXI8
dHlwZW5hbWUgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46Oml0
ZXJhdG9yLCBib29sPiBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAmdmFsdWUpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hD
b3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5
cGUgJnZhbHVlKQogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0g
bV9pbXBsLmFkZCh2YWx1ZSwgMCk7IAotICAgICAgICArK3Jlc3VsdC5maXJzdC0+c2Vjb25kOwor
ICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7CisgICAgICAg
ICsrcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCmluZGV4IGJlN2U5ZWJlZDEzNzkzYmE3OGUwY2FmZDczOTA1YjFlMDRj
MzA1NzguLjI2YTlkOWM1Y2IxNThkM2E1ZmViNzJlYzVjYzg1MGE4ZTYwMTYzZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5
cGU+IGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFw
dGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7CisgICAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKQEAgLTk0LDEyICs5NSwxMiBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gcmVwbGFjZXMgdmFsdWUgYnV0IG5vdCBrZXkg
aWYga2V5IGlzIGFscmVhZHkgcHJlc2VudAogICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBw
YWlyIG9mIHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKICAgICAgICAgLy8gYW5k
IGEgYm9vbGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQ
YXNzSW5UeXBlKTsgCisgICAgICAgIEFkZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBl
ZFBhc3NJblR5cGUpOwogCiAgICAgICAgIC8vIGRvZXMgbm90aGluZyBpZiBrZXkgaXMgYWxyZWFk
eSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0ZXJh
dG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRoYXQn
cyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAKKyAg
ICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7CiAK
ICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92
ZShpdGVyYXRvcik7CkBAIC0xMjIsMTIgKzEyMywxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLy8gICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJik7CiAgICAgICAgIC8vICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgVmFsdWVUeXBlJiwgY29uc3QgVCYpOwogICAgICAgICAvLyAg
IHN0YXRpYyB0cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2Rl
KTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+
IHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBUJiwgTWFwcGVkUGFzc0luVHlwZSk7Cisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPiBBZGRS
ZXN1bHQgYWRkKGNvbnN0IFQmLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAogICAgICAgICB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHBhaXI8aXRl
cmF0b3IsIGJvb2w+IGlubGluZUFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luUmVmZXJl
bmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1h
cHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOwogCiAgICAgICAgIGNsYXNzIEhhc2hNYXBLZXlzUHJv
eHkgOiBwcml2YXRlIEhhc2hNYXAgewogICAgICAgICBwdWJsaWM6CkBAIC0zMTksMzQgKzMyMCwz
NCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGlu
ZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgor
ICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBh
c3NJblJlZmVyZW5jZVR5cGUgbWFwcGVkKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgYWRkPEhhc2hNYXBUcmFuc2xhdG9yPFZhbHVlVHJhaXRzLCBIYXNoRnVuY3Rpb25z
PiA+KGtleSwgbWFwcGVkKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIHBhaXI8dHlw
ZW5hbWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5h
bWUgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgTWFwcGVkUGFzc0luVHlwZSBtYXBwZWQp
IAogICAgIHsKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gaW5saW5lQWRk
KGtleSwgbWFwcGVkKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgIEFk
ZFJlc3VsdCByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOworICAgICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJv
dmUgZm91bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhl
IG1hcHBlZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCBy
ZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1h
cHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUWVBFLCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmFk
ZChjb25zdCBUWVBFJiBrZXksIE1hcHBlZFBhc3NJblR5cGUgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoTWFwVHJhbnNs
YXRvckFkYXB0ZXI8VmFsdWVUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPiA+KGtleSwgdmFsdWUpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFQsIFUs
IFYsIFcsIFg+OjppdGVyYXRvciwgYm9vbD4KKyAgICB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYs
IFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjphZGQoY29uc3Qg
S2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IDMzY2IxNGRhYWI2ODI2
ODdmMGFlOGU2YzJjOGYxYjJiYWVmOGFiOTYuLjFiM2IyZTI4NzMzNDM5YjEwYmI3NTNjOTA0ZDU0
ZmZlYzU1ZjI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFw
dGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBj
b25zdF9pdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpB
ZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7CiAKQEAg
LTc2LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2
YWx1ZSBpcyBhIHBhaXIgb2YgYW4gaW50ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlv
biwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3
YXMgYWRkZWQuCi0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5
cGUmKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAogICAgICAg
ICAvLyBBbiBhbHRlcm5hdGUgdmVyc2lvbiBvZiBhZGQoKSB0aGF0IGZpbmRzIHRoZSBvYmplY3Qg
YnkgaGFzaGluZyBhbmQgY29tcGFyaW5nCiAgICAgICAgIC8vIHdpdGggc29tZSBvdGhlciB0eXBl
LCB0byBhdm9pZCB0aGUgY29zdCBvZiB0eXBlIGNvbnZlcnNpb24gaWYgdGhlIG9iamVjdCBpcyBh
bHJlYWR5CkBAIC04Niw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyAgIHN0
YXRpYyB0cmFuc2xhdGUoVmFsdWVUeXBlJiwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2RlKTsK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdGVt
cGxhdGUgYXJndW1lbnRzIHNvIHRoYXQgY2FsbGVycwogICAgICAgICAvLyBjYW4ganVzdCBwYXNz
IHRoZSB0cmFuc2xhdG9yIGFuZCBsZXQgdGhlIGNvbXBpbGVyIGRlZHVjZSBULgotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4gcGFpcjxpdGVyYXRv
ciwgYm9vbD4gYWRkKGNvbnN0IFQmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+IEFkZFJlc3VsdCBhZGQoY29uc3QgVCYpOwogCiAgICAgICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVy
YXRvcik7CkBAIC0xNzcsMTQgKzE3OCwxNCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgIGlubGlu
ZSBwYWlyPHR5cGVuYW1lIEhhc2hTZXQ8VCwgVSwgVj46Oml0ZXJhdG9yLCBib29sPiBIYXNoU2V0
PFQsIFUsIFY+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkKKyAgICBpbmxpbmUgdHlwZW5h
bWUgSGFzaFNldDxULCBVLCBWPjo6QWRkUmVzdWx0IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChjb25z
dCBWYWx1ZVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5hZGQodmFs
dWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgaW5saW5l
IHR5cGVuYW1lIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OkFkZFJlc3Vs
dAogICAgIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChjb25zdCBU
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2lu
Z0hhc2hDb2RlPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4gPih2YWx1
ZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAwNTcyMmQ5YzU1NmE3OTdiNDE4ODA3MjBkN2Nl
MzAwNTdmYjVmNmI2Li45YmQ1NDgyZmFjZWI3MjA5NDRjZTRjNTMxMTc0NzQwYmU0M2JiNmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaApAQCAtMjk2LDYgKzI5NiwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgdHJhbnNsYXRl
KFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgY29uc3QgVCYgdmFsdWUpIHsgbG9jYXRpb24gPSB2YWx1
ZTsgfQogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+IHN0cnVj
dCBIYXNoVGFibGVBZGRSZXN1bHQgeworICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQoSXRlcmF0
b3JUeXBlIGl0ZXIsIGJvb2wgaXNOZXdFbnRyeSkgOiBpdGVyYXRvcihpdGVyKSwgaXNOZXdFbnRy
eShpc05ld0VudHJ5KSB7IH0KKyAgICAgICAgSXRlcmF0b3JUeXBlIGl0ZXJhdG9yOworICAgICAg
ICBib29sIGlzTmV3RW50cnk7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgY2xhc3MgSGFzaFRh
YmxlIHsKICAgICBwdWJsaWM6CkBAIC0zMDUsNiArMzExLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIHR5cGVkZWYgS2V5IEtleVR5cGU7CiAgICAgICAgIHR5cGVkZWYgVmFsdWUgVmFsdWVU
eXBlOwogICAgICAgICB0eXBlZGVmIElkZW50aXR5SGFzaFRyYW5zbGF0b3I8SGFzaEZ1bmN0aW9u
cz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVBZGRS
ZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKIAogICAgICAgICBIYXNoVGFibGUoKTsKICAgICAg
ICAgfkhhc2hUYWJsZSgpIApAQCAtMzMwLDEzICszMzcsMTMgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGVTaXplOyB9CiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKLSAgICAg
ICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0
dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUp
LCB2YWx1ZSk7IH0KKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0
KHZhbHVlKSwgdmFsdWUpOyB9CiAKICAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNpb24gb2YgYWRk
KCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmluZwogICAgICAg
ICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgdHlwZSBjb252
ZXJzaW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQogICAgICAgICAvLyBpbiB0aGUgdGFibGUu
Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0
eXBlbmFtZSBFeHRyYT4gcGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IFQmIGtleSwgY29u
c3QgRXh0cmEmKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJhPiBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGRQYXNzaW5n
SGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJl
c3VsdCBhZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJl
c3VsdCBhZGRQYXNzaW5nSGFzaENvZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYpOwogCiAg
ICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5KSB7IHJldHVybiBmaW5kPElk
ZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3IgZmlu
ZChjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGZpbmQ8SWRlbnRpdHlUcmFuc2xh
dG9yVHlwZT4oa2V5KTsgfQpAQCAtNjY1LDcgKzY3Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgRXh0cmE+Ci0gICAgaW5saW5lIHBhaXI8dHlwZW5hbWUgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ojpp
dGVyYXRvciwgYm9vbD4gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYg
ZXh0cmEpCisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6YWRkKGNvbnN0IFQmIGtleSwgY29uc3QgRXh0cmEmIGV4dHJhKQogICAgIHsKICAgICAgICAg
Y2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKQEAgLTcwMCw3ICs3MDcsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4
dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzRGVsZXRlZEJ1
Y2tldCgqZW50cnkpKQogICAgICAgICAgICAgICAgICAgICBkZWxldGVkRW50cnkgPSBlbnRyeTsK
QEAgLTcxMSw3ICs3MTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICBpZiAo
aXNEZWxldGVkQnVja2V0KCplbnRyeSkpCiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRy
eSA9IGVudHJ5OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKEhhc2hUcmFuc2xhdG9yOjplcXVh
bChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRl
cmF0b3IoZW50cnkpLCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAjaWYgRFVNUF9IQVNIVEFCTEVf
U1RBVFMKICAgICAgICAgICAgICsrcHJvYmVDb3VudDsKQEAgLTczOCwxOSArNzQ1LDE5IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAgICAgLy8gZm9sbG93IGEgcGl2b3QgZW50cnkgYW5kIHJl
dHVybiB0aGUgbmV3IHBvc2l0aW9uLgogICAgICAgICAgICAgS2V5VHlwZSBlbnRlcmVkS2V5ID0g
RXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSk7CiAgICAgICAgICAgICBleHBhbmQoKTsKLSAgICAg
ICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHAgPSBzdGQ6Om1ha2VfcGFpcihmaW5kKGVudGVy
ZWRLZXkpLCB0cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVChwLmZpcnN0ICE9IGVuZCgpKTsKLSAg
ICAgICAgICAgIHJldHVybiBwOworICAgICAgICAgICAgQWRkUmVzdWx0IHJlc3VsdChmaW5kKGVu
dGVyZWRLZXkpLCB0cnVlKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3IgIT0g
ZW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAgCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0
cnVlKTsKKyAgICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50
cnkpLCB0cnVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBpbmxpbmUgcGFp
cjx0eXBlbmFtZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46Oml0ZXJhdG9yLCBib29sPiBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3Np
bmdIYXNoQ29kZShjb25zdCBUJiBrZXksIGNvbnN0IEV4dHJhJiBleHRyYSkKKyAgICBpbmxpbmUg
dHlwZW5hbWUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpBZGRSZXN1bHQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENv
ZGUoY29uc3QgVCYga2V5LCBjb25zdCBFeHRyYSYgZXh0cmEpCiAgICAgewogICAgICAgICBjaGVj
a0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIApAQCAtNzY4LDcgKzc3NSw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICB1bnNpZ25lZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKICAgICAg
ICAgCiAgICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIGZhbHNlKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkgewogICAgICAgICAgICAg
aW5pdGlhbGl6ZUJ1Y2tldCgqZW50cnkpOwpAQCAtNzgzLDE0ICs3OTAsMTQgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICAvLyBmb2xsb3cgYSBwaXZvdCBlbnRyeSBhbmQgcmV0dXJuIHRo
ZSBuZXcgcG9zaXRpb24uCiAgICAgICAgICAgICBLZXlUeXBlIGVudGVyZWRLZXkgPSBFeHRyYWN0
b3I6OmV4dHJhY3QoKmVudHJ5KTsKICAgICAgICAgICAgIGV4cGFuZCgpOwotICAgICAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gcCA9IHN0ZDo6bWFrZV9wYWlyKGZpbmQoZW50ZXJlZEtleSks
IHRydWUpOwotICAgICAgICAgICAgQVNTRVJUKHAuZmlyc3QgIT0gZW5kKCkpOwotICAgICAgICAg
ICAgcmV0dXJuIHA7CisgICAgICAgICAgICBBZGRSZXN1bHQgcmVzdWx0KGZpbmQoZW50ZXJlZEtl
eSksIHRydWUpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvciAhPSBlbmQoKSk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKICAgICAgICAgaW50ZXJu
YWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IDc5OTQ2NmZhOThjNmRmN2UyNWIyMDY3YzJh
MjAwZjQ3OTQ3M2FjMTIuLjIxZTM4ZDgzYWI0NzA2NzgxYzM3YjE1MWYxZGNlMTEyMjQ5MzJjODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvTGlzdEhhc2hTZXQuaApAQCAtODEsNiArODEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwg
aW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0UmV2ZXJzZUl0ZXJhdG9yPFZhbHVlVHlwZSwg
aW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+OwogCisgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQWRk
UmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7CisKICAgICAgICAgTGlzdEhhc2hTZXQoKTsKICAg
ICAgICAgTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICAgICAgTGlzdEhhc2hT
ZXQmIG9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYpOwpAQCAtMTI0LDEwICsxMjYsMTAgQEAg
bmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiBhZGQgaXMg
YSBwYWlyIG9mIGFuIGl0ZXJhdG9yIHRvIHRoZSBuZXcgdmFsdWUncyBsb2NhdGlvbiwgCiAgICAg
ICAgIC8vIGFuZCBhIGJvb2wgdGhhdCBpcyB0cnVlIGlmIGFuIG5ldyBlbnRyeSB3YXMgYWRkZWQu
Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKKyAg
ICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsKIAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSk7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+
IGluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJik7CisgICAgICAgIEFk
ZFJlc3VsdCBpbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3Qg
VmFsdWVUeXBlJiBuZXdWYWx1ZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbnNlcnRCZWZvcmUoaXRl
cmF0b3IsIGNvbnN0IFZhbHVlVHlwZSYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFZh
bHVlVHlwZSYpOwogICAgICAgICB2b2lkIHJlbW92ZShpdGVyYXRvcik7CkBAIC02OTUsMjYgKzY5
NywyNSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKQor
ICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0
IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSAm
dmFsdWUpCiAgICAgewotICAgICAgICBwYWlyPHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUs
IG1fYWxsb2NhdG9yLmdldCgpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCi0gICAgICAg
ICAgICBhcHBlbmROb2RlKCpyZXN1bHQuZmlyc3QpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKKyAgICAg
ICAgdHlwZW5hbWUgSW1wbFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUg
YWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBhcHBlbmROb2RlKCpyZXN1bHQuaXRl
cmF0b3IpOworICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0
ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLSAgICBwYWlyPHR5cGVu
YW1lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXRlcmF0b3IsIGJvb2w+IExp
c3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0
LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQs
IGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1Zh
bHVlKQogICAgIHsKLSAgICAgICAgcGFpcjx0eXBlbmFtZSBJbXBsVHlwZTo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVl
LCBtX2FsbG9jYXRvci5nZXQoKSk7Ci0gICAgICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAg
ICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuZmlyc3QpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIobWFrZUl0ZXJhdG9yKCpyZXN1bHQuZmlyc3QpLCByZXN1
bHQuc2Vjb25kKTsKLQorICAgICAgICB0eXBlbmFtZSBJbXBsVHlwZTo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KG5ld1ZhbHVlLCBtX2FsbG9j
YXRvci5nZXQoKSk7CisgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
IGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVzdWx0Lml0ZXJhdG9yKTsKKyAgICAgICAg
cmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5p
c05ld0VudHJ5KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci0gICAgcGFpcjx0eXBlbmFtZSBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT46Oml0ZXJhdG9yLCBib29sPiBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVl
LCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKQorICAgIHR5cGVuYW1lIExpc3RIYXNoU2V0PFQs
IGlubGluZUNhcGFjaXR5LCBVPjo6QWRkUmVzdWx0IExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIGNvbnN0
IFZhbHVlVHlwZSYgbmV3VmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gaW5zZXJ0QmVmb3Jl
KGZpbmQoYmVmb3JlVmFsdWUpLCBuZXdWYWx1ZSk7IAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAu
aAppbmRleCBmNDhhNTljZjYzNzAyMjY0MDQyNTIwM2M4ZTQyZDE2YmVkOGI1MTczLi4wYWYzNmJl
NjAyN2ZiNTAwYmJmZWE1YzIxZGM2ZTA4Y2RmMDE5ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHJIYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5o
CkBAIC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBl
PiBpdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
cjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOworICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICAg
ICAgdm9pZCBzd2FwKEhhc2hNYXAmKTsKIApAQCAtODYsMTQgKzg3LDE0IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICAvLyByZXBsYWNlcyB2YWx1ZSBidXQgbm90IGtleSBpZiBrZXkgaXMgYWxy
ZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgb2YgdGhlIGl0
ZXJhdG9yIHRvIHRoZSBrZXkgbG9jYXRpb24sIAogICAgICAgICAvLyBhbmQgYSBib29sZWFuIHRo
YXQncyB0cnVlIGlmIGEgbmV3IHZhbHVlIHdhcyBhY3R1YWxseSBhZGRlZAotICAgICAgICBwYWly
PGl0ZXJhdG9yLCBib29sPiBzZXQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblR5cGUpOyAK
LSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gc2V0KFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJ
blR5cGUpOyAKKyAgICAgICAgQWRkUmVzdWx0IHNldChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFz
c0luVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBzZXQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0lu
VHlwZSk7CiAKICAgICAgICAgLy8gZG9lcyBub3RoaW5nIGlmIGtleSBpcyBhbHJlYWR5IHByZXNl
bnQKICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8g
dGhlIGtleSBsb2NhdGlvbiwgCiAgICAgICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUg
aWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVhbGx5IGFkZGVkCi0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IGFkZChjb25zdCBLZXlUeXBlJiwgTWFwcGVkUGFzc0luVHlwZSk7IAotICAgICAgICBw
YWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoUmF3S2V5VHlwZSwgTWFwcGVkUGFzc0luVHlwZSk7IAor
ICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IEtleVR5cGUmLCBNYXBwZWRQYXNzSW5UeXBlKTsK
KyAgICAgICAgQWRkUmVzdWx0IGFkZChSYXdLZXlUeXBlLCBNYXBwZWRQYXNzSW5UeXBlKTsKIAog
ICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJik7CiAgICAgICAgIHZvaWQgcmVtb3Zl
KFJhd0tleVR5cGUpOwpAQCAtMTA0LDggKzEwNSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBNYXBwZWRQYXNzT3V0VHlwZSB0YWtlKFJhd0tleVR5cGUpOyAvLyBlZmZpY2llbnQgY29tYmlu
YXRpb24gb2YgZ2V0IHdpdGggcmVtb3ZlCiAKICAgICBwcml2YXRlOgotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVy
ZW5jZVR5cGUpOwotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBpbmxpbmVBZGQoUmF3S2V5
VHlwZSwgTWFwcGVkUGFzc0luUmVmZXJlbmNlVHlwZSk7CisgICAgICAgIEFkZFJlc3VsdCBpbmxp
bmVBZGQoY29uc3QgS2V5VHlwZSYsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5cGUpOworICAgICAg
ICBBZGRSZXN1bHQgaW5saW5lQWRkKFJhd0tleVR5cGUsIE1hcHBlZFBhc3NJblJlZmVyZW5jZVR5
cGUpOwogCiAgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwogICAgIH07CkBAIC0xOTUsNTIg
KzE5Niw1MiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAg
IGlubGluZSBwYWlyPHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRl
cmF0b3IsIGJvb2w+CisgICAgaW5saW5lIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBW
LCBXLCBYPjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpp
bmxpbmVBZGQoY29uc3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1h
cHBlZCkgCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xh
dG9yPihrZXksIG1hcHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUg
cGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBi
b29sPgorICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46
OkFkZFJlc3VsdAogICAgIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aW5saW5lQWRk
KFJhd0tleVR5cGUga2V5LCBNYXBwZWRQYXNzSW5SZWZlcmVuY2VUeXBlIG1hcHBlZCkgCiAgICAg
ewogICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxUcmFuc2xhdG9yPihrZXksIG1h
cHBlZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBwYWlyPHR5cGVuYW1lIEhhc2hN
YXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6aXRlcmF0b3IsIGJvb2w+CisgICAgdHlwZW5hbWUg
SGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpBZGRSZXN1bHQKICAgICBIYXNoTWFwPFJl
ZlB0cjxUPiwgVSwgViwgVywgWD46OnNldChjb25zdCBLZXlUeXBlJiBrZXksIE1hcHBlZFBhc3NJ
blR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVzdWx0LnNlY29uZCkg
eworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKKyAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGlu
ZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5l
ZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0
b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAgICAgTWFwcGVkVHJh
aXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgcGFp
cjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yLCBib29s
PgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6QWRkUmVzdWx0
CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpzZXQoUmF3S2V5VHlwZSBrZXks
IE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKSAKICAgICB7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IGlubGluZUFkZChrZXksIG1hcHBlZCk7Ci0gICAgICAgIGlmICghcmVz
dWx0LnNlY29uZCkgeworICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwg
bWFwcGVkKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAg
Ly8gVGhlIGlubGluZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUg
ZW50cnk7IHdlIG5lZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBw
ZWRUcmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICAg
ICAgTWFwcGVkVHJhaXRzOjpzdG9yZShtYXBwZWQsIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0
ZXJhdG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBY
Pjo6QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQoY29u
c3QgS2V5VHlwZSYga2V5LCBNYXBwZWRQYXNzSW5UeXBlIG1hcHBlZCkKICAgICB7CiAgICAgICAg
IHJldHVybiBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Ci0gICAgcGFpcjx0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJh
dG9yLCBib29sPgorICAgIHR5cGVuYW1lIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6
QWRkUmVzdWx0CiAgICAgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjphZGQoUmF3S2V5
VHlwZSBrZXksIE1hcHBlZFBhc3NJblR5cGUgbWFwcGVkKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGlubGluZUFkZChrZXksIG1hcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TcGVj
dHJ1bS5oIGIvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAppbmRleCA1OWJjNGEyOWE5ZDhkNzc1
MWIyZGQxZDAzMWI4NTIzYzY1YjYzNDdkLi41ZTdhNDg0Y2Q4NzY2YmNhZjIyY2E0YzkzZGRjZTk3
MGRkMmJhMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgYWRkKGNvbnN0IFQmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCA9IDEpCiAgICAg
ewotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChr
ZXksIGNvdW50KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQgKz0gY291bnQ7CisgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwg
dW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7
CisgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCArPSBjb3VudDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbG9uZyBn
ZXQoY29uc3QgVCYga2V5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcAppbmRleCBlYzVk
ZTcyMjAwZjU3NWQ3NzRjYzIwZDkxYTkzOGU5ZDlkOWYwMjY5Li4zYTkwM2Y4OTVlMGY5NjVmNDY0
ZmVjZjhiMDljYmE5MzcyNDBiZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJl
YWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmNwcApAQCAtNjMs
MTAgKzYzLDEwIEBAIElkZW50aWZpZXJUYWJsZTo6fklkZW50aWZpZXJUYWJsZSgpCiAgICAgICAg
ICgqaXRlciktPnNldElzSWRlbnRpZmllcihmYWxzZSk7CiB9CiAKLXN0ZDo6cGFpcjxIYXNoU2V0
PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IElkZW50aWZpZXJUYWJsZTo6YWRkKFN0cmlu
Z0ltcGwqIHZhbHVlKQorSGFzaFNldDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCBJZGVudGlmaWVy
VGFibGU6OmFkZChTdHJpbmdJbXBsKiB2YWx1ZSkKIHsKLSAgICBzdGQ6OnBhaXI8SGFzaFNldDxT
dHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7
Ci0gICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CisgICAgSGFzaFNl
dDxTdHJpbmdJbXBsKj46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3RhYmxlLmFkZCh2YWx1ZSk7Cisg
ICAgKCpyZXN1bHQuaXRlcmF0b3IpLT5zZXRJc0lkZW50aWZpZXIodHJ1ZSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5o
IGIvU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCmluZGV4IGIwMmQxMGQ3YzgxOTFhN2E1
ZmU3YjVlN2E3MjQ0MmY1NjhmZDQ2N2QuLmRiYzViYTZhYzU0Zjg1OGE3MjQ4YjczY2MwOTY5NzY5
ZjA5YTNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3Mg
SWRlbnRpZmllclRhYmxlIHsKIHB1YmxpYzoKICAgICB+SWRlbnRpZmllclRhYmxlKCk7CiAKLSAg
ICBzdGQ6OnBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGQoU3Ry
aW5nSW1wbCogdmFsdWUpOworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRk
KFN0cmluZ0ltcGwqIHZhbHVlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PgotICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZChVIHZhbHVlKTsKKyAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZChVIHZh
bHVlKTsKIAogICAgIGJvb2wgcmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGQ3NzVlN2JiOTRmZmUwNjM2ZGYzM2JhMmRlM2Vk
NWMzNWM5ZjkxZGMuLjY2YmQ3ODUxYTAwNTJkYzRlMTk2YzFiYjQwYTVkM2E4MTM5NWU2MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBzdGF0
aWMgaW5saW5lIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewotICAg
IHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBz
dHJpbmdUYWJsZSgpLmFkZDxULCBIYXNoVHJhbnNsYXRvcj4odmFsdWUpOworICAgIEhhc2hTZXQ8
U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nVGFibGUoKS5hZGQ8VCwg
SGFzaFRyYW5zbGF0b3I+KHZhbHVlKTsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHkt
dHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFu
IGluIHRoZSBwYWlyIHRlbGxzIHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3Vs
dC5zZWNvbmQgPyBhZG9wdFJlZigqYWRkUmVzdWx0LmZpcnN0KSA6ICphZGRSZXN1bHQuZmlyc3Q7
CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRSZWYoKmFkZFJlc3VsdC5p
dGVyYXRvcikgOiAqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5z
bGF0b3IgewpAQCAtMzAwLDcgKzMwMCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWlj
U3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIGlmICghci0+bGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogCi0gICAgU3RyaW5nSW1wbCog
cmVzdWx0ID0gKnN0cmluZ1RhYmxlKCkuYWRkKHIpLmZpcnN0OworICAgIFN0cmluZ0ltcGwqIHJl
c3VsdCA9ICpzdHJpbmdUYWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAgICBpZiAocmVzdWx0ID09
IHIpCiAgICAgICAgIHItPnNldElzQXRvbWljKHRydWUpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTU4Yzk4ZDdmZjg3NDAzOGU1MTdi
NjBkMTk3M2M3MjhkY2ZhYjc5Li44MzdiOGZiZDIyMDVhZGM5NzQ4NmRkM2YwZThmMDIwNzM4MGY4
ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiAgICAgQ29vcmRpbmF0aW9uSW5mb01hcDo6aXRlcmF0b3IgY29vcmRp
bmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmZpbmQoZGJJZGVudGlm
aWVyKTsKICAgICBpZiAoY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID09IG1fY29vcmRpbmF0aW9u
SW5mb01hcC5lbmQoKSkgewogICAgICAgICAvLyBObyBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3Ig
dGhpcyBEQgotICAgICAgICBjb29yZGluYXRpb25JbmZvSXRlcmF0b3IgPSBtX2Nvb3JkaW5hdGlv
bkluZm9NYXAuYWRkKGRiSWRlbnRpZmllciwgQ29vcmRpbmF0aW9uSW5mbygpKS5maXJzdDsKKyAg
ICAgICAgY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yID0gbV9jb29yZGluYXRpb25JbmZvTWFwLmFk
ZChkYklkZW50aWZpZXIsIENvb3JkaW5hdGlvbkluZm8oKSkuaXRlcmF0b3I7CiAgICAgfQogCiAg
ICAgQ29vcmRpbmF0aW9uSW5mbyYgaW5mbyA9IGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvci0+c2Vj
b25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9jaHJv
bWl1bS9RdW90YVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCmluZGV4IDJhMDk2Mjc5OGJiZWYzMjU0ZDAxNzU4
Mzg1NzFiZTNiNDEyNzE2NjcuLjEwYjA4YTJiNzIzY2RhMjkyMGQ0M2RlZmExOGMzMTE1ZWZhMWIy
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21p
dW0vUXVvdGFUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBRdW90
YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0
YWJhc2VTaXplKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhKG1fZGF0YUd1YXJkKTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgU2l6ZU1hcD46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVNpemVz
LmFkZChvcmlnaW5JZGVudGlmaWVyLCBTaXplTWFwKCkpLmZpcnN0OworICAgIEhhc2hNYXA8U3Ry
aW5nLCBTaXplTWFwPjo6aXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlU2l6ZXMuYWRkKG9yaWdpbklk
ZW50aWZpZXIsIFNpemVNYXAoKSkuaXRlcmF0b3I7CiAgICAgaXQtPnNlY29uZC5zZXQoZGF0YWJh
c2VOYW1lLCBkYXRhYmFzZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCmluZGV4IDJjMGU5NDgzNmYzYzY0NzIyMjJh
YjY3MmQ0MzM3NzdmM2UxYTYwNzcuLjIxNmI5NDVjNDliOTExZTNmNDVlZmU1YTdlNGMxMzI5NmYz
MGViMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhh
c2hUYWJsZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhh
c2hUYWJsZU1hcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaE1hcDxj
b25zdCBKU0M6Okhhc2hUYWJsZSosIEpTQzo6SGFzaFRhYmxlPjo6aXRlcmF0b3IgaXRlciA9IG1f
bWFwLmZpbmQoc3RhdGljVGFibGUpOwogICAgICAgICBpZiAoaXRlciAhPSBtX21hcC5lbmQoKSkK
ICAgICAgICAgICAgIHJldHVybiAmaXRlci0+c2Vjb25kOwotICAgICAgICByZXR1cm4gJm1fbWFw
LnNldChzdGF0aWNUYWJsZSwgSlNDOjpIYXNoVGFibGUoKnN0YXRpY1RhYmxlKSkuZmlyc3QtPnNl
Y29uZDsKKyAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3RhdGljVGFibGUsIEpTQzo6SGFzaFRh
YmxlKCpzdGF0aWNUYWJsZSkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggMDA1MGE3
MzE1N2ZkZmNiNWRlMDc2MWYzMjVmNmZkMTVhYzAwMDc2ZC4uYzExZjYwMTAzOGE2NjAwNjliYWE1
ZDk5MjZjYzI1ZDJiZWQwNDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgU3RydWN0dXJlKiBjYWNoZURPTVN0cnVj
dHVyZShKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHUK
IHsKICAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC0+c3Ry
dWN0dXJlcygpOwogICAgIEFTU0VSVCghc3RydWN0dXJlcy5jb250YWlucyhjbGFzc0luZm8pKTsK
LSAgICByZXR1cm4gc3RydWN0dXJlcy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
KS5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0lu
Zm8sIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIEpT
Qzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkJiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCmluZGV4IGIwNDlkOWIyY2FlNTBjYjNjMzMxNmY3YjM4MjAwZDhjODdmZDYwZGQuLjdlZWJj
NzdkNDAxMWI4NDI4ZTFhMzdkZGI4YmM0OTQ2YjNmN2VmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0xNDIsOCArMTQyLDggQEAgZW51bSBQYXJhbWV0
ZXJEZWZhdWx0UG9saWN5IHsKICAgICAgICAgaWYgKHNldElubGluZUNhY2hlZFdyYXBwZXIod29y
bGQsIGRvbU9iamVjdCwgd3JhcHBlcikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEpT
Qzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPiBwYXNzV2Vhaygqd29ybGQtPmdsb2JhbERhdGEoKSwg
d3JhcHBlciwgd3JhcHBlck93bmVyKHdvcmxkLCBkb21PYmplY3QpLCB3cmFwcGVyQ29udGV4dCh3
b3JsZCwgZG9tT2JqZWN0KSk7Ci0gICAgICAgIHBhaXI8RE9NT2JqZWN0V3JhcHBlck1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IHdvcmxkLT5tX3dyYXBwZXJzLmFkZChkb21PYmplY3QsIHBh
c3NXZWFrKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOwor
ICAgICAgICBET01PYmplY3RXcmFwcGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gd29ybGQtPm1f
d3JhcHBlcnMuYWRkKGRvbU9iamVjdCwgcGFzc1dlYWspOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYWRj
ZDM4ODlmZjI3ODdlMGZhNGEyMjBkYWM2NDc2NTU3NmQ4NTExMC4uNzRmMzViMGI3OTJjMWMwNjAz
N2QxYWRlZjNiMjMxMzY1OGE5MmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNz
OjpjcmVhdGUoZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCks
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZD
b25zdHJ1Y3RvckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlND
OjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19p
bmZvLCB0ZW1wKS5maXJzdC0+c2Vjb25kLnNldChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KS0+Y29uc3RydWN0b3JzKCkuYWRkKCZDb25zdHJ1Y3RvckNsYXNzOjpz
X2luZm8sIHRlbXApLml0ZXJhdG9yLT5zZWNvbmQuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCmluZGV4IGM4ZjE2ZjVhOTYxNjViZThlMTNkYjJiZWI1ZWFiMTYwODM3ZTky
MGMuLmJkZWU0Njg3ZDZjMDQyMTE2M2VlODljM2IwMTBjNmE0YjhlN2RlZWEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApA
QCAtODIsMTEgKzgyLDExIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnCiAgICAgQVNTRVJUX0FS
RyhsaXN0ZW5lciwgbGlzdGVuZXIpOwogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAKLSAg
ICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VM
aXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsKKyAgICBQYWdlTGlzdGVu
ZXJzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFwLmFkZChwYWdlLCAw
KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kID0gbmV3IExpc3RlbmVyU2V0OwogCi0gICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9
IHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7CiAKICAg
ICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBmNDk1Y2VkYzg2MzlmMGZmM2Fj
OTdjYzM2M2M2MzdhYzQxY2QzMjUwLi4xMGRlZDcwMDcwNzk0MDIzZGM3ZWQyMTI5OWZjZmIyNDg2
MTIxN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAg
ICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAgICBpZiAo
aXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAo
KSkuZmlyc3Q7CisgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJj
ZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcmF0b3I7CiAgICAgaWYgKGl0LT5z
ZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSkpCiAgICAgICAg
IHJldHVybiAiIjsKICAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1i
ZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDk2ZjBhODE0ODc0MTM3ZjUy
NWJjNDk1MzZlMzE0MmZhMTg4MjJlZGUuLjdhYzE1NWNjZTZjYzJhNGRkOWFiN2JhYzc3ZDE1MDk0
OGVhZmMwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzkyLDEzICszOTIsMTMgQEAgcHJpdmF0ZToKICAgICBi
b29sIHN0YXJ0T2JqZWN0SW50ZXJuYWwoSlNPYmplY3QqIG9iamVjdCkKICAgICB7CiAgICAgICAg
IC8vIFJlY29yZCBvYmplY3QgZm9yIGdyYXBoIHJlY29uc3RydWN0aW9uCi0gICAgICAgIHBhaXI8
T2JqZWN0UG9vbDo6aXRlcmF0b3IsIGJvb2w+IGl0ZXIgPSBtX29iamVjdFBvb2wuYWRkKG9iamVj
dCwgbV9vYmplY3RQb29sLnNpemUoKSk7CisgICAgICAgIE9iamVjdFBvb2w6OkFkZFJlc3VsdCBh
ZGRSZXN1bHQgPSBtX29iamVjdFBvb2wuYWRkKG9iamVjdCwgbV9vYmplY3RQb29sLnNpemUoKSk7
CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgZHVwbGljYXRlIHJlZmVyZW5jZXMKLSAgICAg
ICAgaWYgKCFpdGVyLnNlY29uZCkgeworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZlcmVuY2VUYWcpOwotICAgICAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGl0ZXIuZmlyc3QtPnNlY29uZCkgPCBtX29iamVj
dFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0SW5kZXgoaXRlci5maXJzdC0+
c2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQzMl90PihhZGRSZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgICAg
IHdyaXRlT2JqZWN0SW5kZXgoYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzI2LDEwICs3MjYsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAg
IHsKICAgICAgICAgVVN0cmluZyBzdHIgPSBpZGVudC51c3RyaW5nKCk7Ci0gICAgICAgIHBhaXI8
U3RyaW5nQ29uc3RhbnRQb29sOjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fY29uc3RhbnRQb29s
LmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBpZiAoIWl0
ZXIuc2Vjb25kKSB7CisgICAgICAgIFN0cmluZ0NvbnN0YW50UG9vbDo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IG1fY29uc3RhbnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXpl
KCkpOworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICB3
cml0ZShTdHJpbmdQb29sVGFnKTsKLSAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoaXRlci5m
aXJzdC0+c2Vjb25kKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5nSW5kZXgoYWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggNmZkZjM3MzQyZTAzMGNk
NmVlZGE1ZjcxMGFiOTJlYTkxOTNhNDBkMC4uNWMzMzU5Mzc3MDVlZjIzYzg2ZDY2NzBiYjFjYjkz
ODdhZjM2ODEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAK
QEAgLTE2Myw3ICsxNjMsNyBAQCBOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChOUFAg
bnBwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgRE9NV2luZAogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaXRlciA9IHN0YXRpY1Y4TlBPYmpl
Y3RNYXAoKS0+c2V0KHY4T2JqZWN0SGFzaCwgVjhOUE9iamVjdFZlY3RvcigpKS5maXJzdDsgCisg
ICAgICAgIGl0ZXIgPSBzdGF0aWNWOE5QT2JqZWN0TWFwKCktPnNldCh2OE9iamVjdEhhc2gsIFY4
TlBPYmplY3RWZWN0b3IoKSkuaXRlcmF0b3I7CiAgICAgfQogCiAgICAgVjhOUE9iamVjdCogdjhu
cE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KF9OUE5fQ3JlYXRlT2JqZWN0
KG5wcCwgJlY4TlBPYmplY3RDbGFzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL0lkZW50aWZpZXJSZXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJS
ZXAuY3BwCmluZGV4IGZlZDQ3Y2E1ZWVlODY2NjAxNjI0NThlM2UxMDRmNDYxMmYxZGY4ZmYuLjJh
Y2YxNDE1M2QxZGI5ZTEyYjcyNTU4YTUzODhkOTg2ZmY4YTVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBJZGVudGlmaWVyUmVw
KiBJZGVudGlmaWVyUmVwOjpnZXQoaW50IGludElEKQogICAgICAgICByZXR1cm4gaWRlbnRpZmll
cjsKICAgICB9CiAgICAgCi0gICAgcGFpcjxJbnRJZGVudGlmaWVyTWFwOjppdGVyYXRvciwgYm9v
bD4gcmVzdWx0ID0gaW50SWRlbnRpZmllck1hcCgpLmFkZChpbnRJRCwgMCk7IAotICAgIGlmIChy
ZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQpOwot
ICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsK
KyAgICBJbnRJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gaW50SWRlbnRpZmllck1h
cCgpLmFkZChpbnRJRCwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAg
IEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKICAgICAgICAgCi0gICAgICAg
IGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgICAgICBpZGVu
dGlmaWVyU2V0KCkuYWRkKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICB9CiAgICAgCi0g
ICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnNlY29uZDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgSWRl
bnRpZmllclJlcCo+IFN0cmluZ0lkZW50aWZpZXJNYXA7CkBAIC05MywxNSArOTMsMTUgQEAgSWRl
bnRpZmllclJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAg
IHJldHVybiAwOwogICAKICAgICBVU3RyaW5nIHN0cmluZyA9IHN0cmluZ1RvVVN0cmluZyhTdHJp
bmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSkpOwotICAg
IHBhaXI8U3RyaW5nSWRlbnRpZmllck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0cmlu
Z0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7Ci0gICAgaWYgKHJlc3VsdC5z
ZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuZmlyc3QtPnNlY29uZCk7Ci0gICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IElkZW50aWZpZXJSZXAobmFtZSk7CisgICAgU3Ry
aW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZpZXJNYXAo
KS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Cisg
ICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IG5ldyBJZGVudGlmaWVyUmVwKG5hbWUpOwogICAgICAgICAKLSAg
ICAgICAgaWRlbnRpZmllclNldCgpLmFkZChyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgICAg
IGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIH0KICAg
ICAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogfQogCiBib29sIElkZW50aWZpZXJSZXA6OmlzVmFsaWQoSWRlbnRp
ZmllclJlcCogaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9O
UF9qc29iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmlu
ZGV4IDJjYmU5MjNmNWQwMGEyMTJiYTY5MDRhYmJiNjQxMWY5NWUzMDU0MzEuLjgzOTg2YWY1ODNj
NTkwNDJmMWJmNzc3NTEyMDdhODAzNTNhZDEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pz
b2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hNYXA8Um9v
dE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHJv
b3RPYmplY3QpOwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkgewogICAgICAgICAg
ICAgcm9vdE9iamVjdC0+YWRkSW52YWxpZGF0aW9uQ2FsbGJhY2soJm1faW52YWxpZGF0aW9uQ2Fs
bGJhY2spOwotICAgICAgICAgICAgaXRlciA9IG1fbWFwLmFkZChyb290T2JqZWN0LCBKU1RvTlBP
YmplY3RNYXAoKSkuZmlyc3Q7CisgICAgICAgICAgICBpdGVyID0gbV9tYXAuYWRkKHJvb3RPYmpl
Y3QsIEpTVG9OUE9iamVjdE1hcCgpKS5pdGVyYXRvcjsKICAgICAgICAgfQogCiAgICAgICAgIEFT
U0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09iamVjdCkgPT0gaXRlci0+c2Vjb25kLmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggYjk4OWMxZDVhNmVhYzcwODg5NDM0ZjUxYzkwNzY2M2ZhNzM3MjJlNC4uNTIxOTA5
N2NlNGRmZDY5Y2NkOGZiYTQ3Mjk5OTI4MGNkY2RkN2RjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyNDcsNyArMTI0
Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwcm9wCiBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVu
dGVkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJRCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEhhc2hTZXQ8aW50PiwgcHJvcGVydHlJRFNldCwgKCkpOwotICAgIGlmICghcHJvcGVydHlJRFNl
dC5hZGQocHJvcGVydHlJRCkuc2Vjb25kKQorICAgIGlmICghcHJvcGVydHlJRFNldC5hZGQocHJv
cGVydHlJRCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HX0VSUk9SKCJX
ZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIs
IGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggZTM2NzM1YWZi
NmIxNzM0NzE3MDg2N2U3NDg0MTdkN2UzZDY3MmU0Yi4uZGQ5MDRkMzdmYjk1NGU0NGRiYTY1Mzg3
NjczNTgzMTE5OGZhZDNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNl
OjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICB1bnNp
Z25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkg
PDwgNiB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSA8PCA0CiAgICAgICAgICAgICAg
ICAgICAgICAgIHwgKGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSA9PSBUZXh0T3Jp
ZW50YXRpb25VcHJpZ2h0ID8gOCA6IDApIHwgKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsID8gNCA6IDApIHwgKHN5bnRoZXRpY0JvbGQgPyAyIDogMCkgfCAoc3ludGhl
dGljSXRhbGljID8gMSA6IDApOwogCi0gICAgU2ltcGxlRm9udERhdGEqJiBjYWNoZWREYXRhID0g
bV9mb250RGF0YVRhYmxlLmFkZChoYXNoS2V5LCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNpbXBs
ZUZvbnREYXRhKiYgY2FjaGVkRGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCku
aXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoY2FjaGVkRGF0YSkKICAgICAgICAgcmV0dXJuIGNh
Y2hlZERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNmQy
MmZkY2NkMGQ1NzlkMDhjNGE2NWMyZTZlNWZmYmJiNWEyNGZhNS4uZTAwMmYyZjhmMDE3MGU5OGNh
NTZkNzFmZTVjZGI5N2JiZWE2MmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZh
Y2VSdWxlKGNvbnN0IENTU0ZvbnRGYWNlUnVsZSogZm9udEZhY2VSdWxlKQogICAgICAgICBpZiAo
ZmFtaWx5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBP
d25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250RmFjZXMgPSBt
X2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICAg
ICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4gPiYgZmFtaWx5Rm9udEZhY2Vz
ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7
CiAgICAgICAgIGlmICghZmFtaWx5Rm9udEZhY2VzKSB7CiAgICAgICAgICAgICBmYW1pbHlGb250
RmFjZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPik7CiAKQEAg
LTQ4NywxMyArNDg3LDEzIEBAIEZvbnREYXRhKiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnREYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiAgICAgICAgIHJldHVy
biBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBm
YW1pbHlOYW1lKTsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRy
PENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUgPSBtX2Zv
bnRzLmFkZChmYW1pbHksIG51bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgT3duUHRyPEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPiA+JiBzZWdtZW50ZWRG
b250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFtaWx5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgIGlmICghc2VnbWVudGVkRm9udEZhY2VDYWNoZSkKICAgICAgICAgc2VnbWVudGVk
Rm9udEZhY2VDYWNoZSA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NT
U2VnbWVudGVkRm9udEZhY2U+ID4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzayA9
IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAKLSAgICBSZWZQdHI8Q1NTU2VnbWVudGVk
Rm9udEZhY2U+JiBmYWNlID0gc2VnbWVudGVkRm9udEZhY2VDYWNoZS0+YWRkKHRyYWl0c01hc2ss
IDApLmZpcnN0LT5zZWNvbmQ7CisgICAgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFj
ZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNrLCAwKS5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0gQ1NTU2VnbWVudGVkRm9u
dEZhY2U6OmNyZWF0ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRG
b250RmFjZS5jcHAKaW5kZXggZTNkOWI3NzAxMzBhMDM1MTBlMDk0NmJkNzVmNTRjMzljOTk3MjAy
NS4uY2Y5ZWM5ZTJlZDJmOWZlZjJiYmQ5NGZmNjVlMGFhZTMyYTM4NDEwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
Rm9udERhdGEqIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGkKICAgICBGb250VHJhaXRzTWFzayBkZXNpcmVkVHJhaXRz
TWFzayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAgICAgdW5zaWduZWQgaGFzaEtl
eSA9ICgoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkgKyAxKSA8PCAoRm9udFRy
YWl0c01hc2tXaWR0aCArIDEpKSB8ICgoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWwgPyAxIDogMCkgPDwgRm9udFRyYWl0c01hc2tXaWR0aCkgfCBkZXNpcmVkVHJhaXRz
TWFzazsKIAotICAgIFNlZ21lbnRlZEZvbnREYXRhKiYgZm9udERhdGEgPSBtX2ZvbnREYXRhVGFi
bGUuYWRkKGhhc2hLZXksIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgU2VnbWVudGVkRm9udERhdGEq
JiBmb250RGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlcmF0b3ItPnNl
Y29uZDsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCAzMWE4N2Fm
MGMzYjM0ZjhlNjZmNzQ4ZmExMTZmZGIxN2U0NTQ3ZDMxLi4wNDFkNmM4MjQ1MjNkMmYyOWI1NjJm
YjFjMjQ0ZjUyNDBjMDZjMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmNwcApAQCAtMTAwNCw3ICsxMDA0LDcgQEAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAgICAgICBJdGVy
YXRvciBlbmQgPSBwYXJlbnRNYXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBw
YXJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDb3VudGVy
RGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0
aXZlcygpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRp
cmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlcmF0
b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpIHsK
ICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQgPSBpdC0+c2Vjb25kLm1fcmVzZXQ7
CiAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSBpdC0+c2Vjb25kLm1f
cmVzZXRWYWx1ZTsKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAg
QXRvbWljU3RyaW5nIGlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHBhaXItPmZpcnN0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSktPmdldElu
dFZhbHVlKCk7Ci0gICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1h
cC5hZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLmZpcnN0LT5zZWNv
bmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQo
aWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNvbmQ7
CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAg
ICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBkaXJlY3Rp
dmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCmluZGV4IGVjMmY5NzIwNjUyYmMzODA4YWI1YTBhMjA2YzVkOGIwNWRlMWYzODYuLmU1
MjJhM2NjYjkyMGQxOTZiODIxZWU1MWY5MmJlNzYzMWFhZDY0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQ5NiwxMCArNDk2LDEwIEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwZW5kQXV0aG9yU3R5bGVzaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNv
bnN0IFZlY3RvcjxSCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAgICAgY29uc3QgQ29u
dGFpbmVyTm9kZSogc2NvcGUgPSBkZXRlcm1pbmVTY29wZShjc3NTaGVldCk7CiAgICAgICAgIGlm
IChzY29wZSkgewotICAgICAgICAgICAgcGFpcjxTY29wZWRSdWxlU2V0TWFwOjppdGVyYXRvciwg
Ym9vbD4gYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxscHRy
KTsKLSAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgICAgIGFk
ZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IFJ1bGVTZXQoKSk7Ci0gICAgICAg
ICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC0+YWRkUnVsZXNGcm9tU2hlZXQoY3NzU2hlZXQs
ICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgICAgICAgICAgU2NvcGVkUnVsZVNldE1hcDo6
QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmFkZChzY29wZSwgbnVs
bHB0cik7CisgICAgICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcgUnVsZVNldCgp
KTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5hZGRSdWxlc0Zyb21T
aGVldChjc3NTaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMzgwLDcgKzIzODAsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFRvUnVsZVNldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAs
IGNvbnN0IFJ1bGVEYQogewogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm47Ci0gICAgT3du
UHRyPFZlY3RvcjxSdWxlRGF0YT4gPiYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0cikuZmly
c3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5h
ZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcnVsZXMpCiAgICAg
ICAgIHJ1bGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSdWxlRGF0YT4pOwogICAgIHJ1bGVzLT5h
cHBlbmQocnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBjNDZj
NzA0N2M1MDBlNGIyODNmM2Q3ZWM1ODRiZDliOGU5MzQ2ZWVhLi4wNWJhNTQ5NTAyYWZiODc2Nzdm
MjUzMTJiZjEzYWI2NDk3NjlhNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApA
QCAtNTUsMTAgKzU1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVudCkKICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKIAogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAgICBwYWlyPElkZW50aWZpZXJWYWx1ZUNh
Y2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBtX2lkZW50aWZpZXJWYWx1ZUNhY2hlLmFkZChp
ZGVudCwgZHVtbXlWYWx1ZSk7Ci0gICAgaWYgKGVudHJ5LnNlY29uZCkKLSAgICAgICAgZW50cnku
Zmlyc3QtPnNlY29uZCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50
KTsKLSAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICBJZGVudGlmaWVyVmFsdWVD
YWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gbV9pZGVudGlmaWVyVmFsdWVDYWNoZS5hZGQoaWRlbnQs
IGR1bW15VmFsdWUpOworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5p
dGVyYXRvci0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRl
bnQpOworICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWdu
ZWQgcmdiVmFsdWUpCkBAIC03OCwxMCArNzgsMTAgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVlKQog
ICAgICAgICBtX2NvbG9yVmFsdWVDYWNoZS5jbGVhcigpOwogCiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBkdW1teVZhbHVlOwotICAgIHBhaXI8Q29sb3JWYWx1ZUNhY2hlOjppdGVyYXRv
ciwgYm9vbD4gZW50cnkgPSBtX2NvbG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIGR1bW15VmFs
dWUpOwotICAgIGlmIChlbnRyeS5zZWNvbmQpCi0gICAgICAgIGVudHJ5LmZpcnN0LT5zZWNvbmQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IocmdiVmFsdWUpOwotICAgIHJldHVybiBl
bnRyeS5maXJzdC0+c2Vjb25kOworICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVzdWx0IGVudHJ5
ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsKKyAgICBpZiAo
ZW50cnkuaXNOZXdFbnRyeSkKKyAgICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihyZ2JWYWx1ZSk7CisgICAgcmV0dXJuIGVudHJ5Lml0
ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzIHR5cGUpCkBAIC0xMTcsMTUgKzExNywxNSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0
aQogICAgIH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZHVtbXlWYWx1ZTsKLSAg
ICBwYWlyPEludGVnZXJWYWx1ZUNhY2hlOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBjYWNoZS0+
YWRkKGludFZhbHVlLCBkdW1teVZhbHVlKTsKLSAgICBpZiAoZW50cnkuc2Vjb25kKQotICAgICAg
ICBlbnRyeS5maXJzdC0+c2Vjb25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
dHlwZSk7Ci0gICAgcmV0dXJuIGVudHJ5LmZpcnN0LT5zZWNvbmQ7CisgICAgSW50ZWdlclZhbHVl
Q2FjaGU6OkFkZFJlc3VsdCBlbnRyeSA9IGNhY2hlLT5hZGQoaW50VmFsdWUsIGR1bW15VmFsdWUp
OworICAgIGlmIChlbnRyeS5pc05ld0VudHJ5KQorICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vj
b25kID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgcmV0dXJu
IGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZSkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiB2YWx1ZSA9IG1fZm9u
dEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5hbWUsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hl
LmFkZChmYW1pbHlOYW1lLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTM4LDcg
KzEzOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZv
bnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VWYWx1
ZUNhY2hlLnNpemUoKSA+IG1heGltdW1Gb250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9mb250
RmFjZVZhbHVlQ2FjaGUuY2xlYXIoKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1
ZSA9IG1fZm9udEZhY2VWYWx1ZUNhY2hlLmFkZChzdHJpbmcsIDApLmZpcnN0LT5zZWNvbmQ7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4mIHZhbHVlID0gbV9mb250RmFjZVZhbHVlQ2FjaGUuYWRk
KHN0cmluZywgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICB2
YWx1ZSA9IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKHN0cmluZywgY29udGV4dFN0eWxl
U2hlZXQpOwogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFk
aW9CdXR0b25zLmNwcAppbmRleCA0NzBkYTJhZDVjNzNiMTc5MmFlNjIzZDk0ODI2OGI4ZDY1NWU2
YzU4Li5lNjcyMzI5YWY4ZGUzNzhiZWZkZmMxNGY4YWNiZDBmMmVjMGM3NDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgUmFkaW9CdXR0b25Hcm91cDo6c2V0Q2hlY2tlZEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBi
dXR0b24pCiB2b2lkIFJhZGlvQnV0dG9uR3JvdXA6OmFkZChIVE1MSW5wdXRFbGVtZW50KiBidXR0
b24pCiB7CiAgICAgQVNTRVJUKGJ1dHRvbi0+aXNSYWRpb0J1dHRvbigpKTsKLSAgICBpZiAoIW1f
bWVtYmVycy5hZGQoYnV0dG9uKS5zZWNvbmQpCisgICAgaWYgKCFtX21lbWJlcnMuYWRkKGJ1dHRv
bikuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgZ3JvdXBXYXNWYWxpZCA9
IGlzVmFsaWQoKTsKICAgICBpZiAoYnV0dG9uLT5yZXF1aXJlZCgpKQpAQCAtMTg1LDcgKzE4NSw3
IEBAIHZvaWQgQ2hlY2tlZFJhZGlvQnV0dG9uczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQogICAgICAgICBtX25hbWVUb0dy
b3VwTWFwID0gYWRvcHRQdHIobmV3IE5hbWVUb0dyb3VwTWFwKTsKIAotICAgIE93blB0cjxSYWRp
b0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFt
ZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3VwPigpKS5maXJzdC0+c2Vjb25k
OworICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFw
LT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRpb0J1dHRvbkdyb3Vw
PigpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JvdXApCiAgICAgICAgIGdyb3VwID0g
UmFkaW9CdXR0b25Hcm91cDo6Y3JlYXRlKCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBjYmFh
YTRlZmVjMDE3YjM2MjJiNjg0OTRjZGU0ZjE5MzFjY2FiZDhmLi5jNWNiM2FkOWY2ZWFiNzhkODll
NWQ2N2VhOWM0MzUyMzIyOTdlMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hp
bGRMaXN0TXV0YXRpb25TY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwCkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBDaGlsZExpc3RNdXRh
dGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6d2lsbFJlbW92ZUNoaWxkKE5v
ZGUqIHQKIAogdm9pZCBDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxhdGlv
blJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKIHsKLSAgICBwYWly
PFNjb3BpbmdMZXZlbE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fc2NvcGluZ0xldmVs
cy5hZGQodGFyZ2V0LCAxKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgKyso
cmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIFNjb3BpbmdMZXZlbE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG1fc2NvcGluZ0xldmVscy5hZGQodGFyZ2V0LCAxKTsKKyAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KSB7CisgICAgICAgICsrKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzdlMmJjNGM0
ZTA0NDgzZjliMjVkZDYzMGE1ZmE2ZTY0ODE1MTkxMS4uODY3YThkNmE3MTIwZTQ3ZGU2MmQxYzlk
MTgwZWVhZjQ5YjU2MmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTE5LDcgKzQ1
MTksNyBAQCBIVE1MQWxsQ29sbGVjdGlvbiogRG9jdW1lbnQ6OmFsbCgpCiAKIEhUTUxDb2xsZWN0
aW9uKiBEb2N1bWVudDo6d2luZG93TmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgT3duUHRyPEhUTUxOYW1lQ29sbGVjdGlvbj4mIGNvbGxlY3Rpb24gPSBtX3dpbmRv
d05hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cikuZmlyc3QtPnNl
Y29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiYgY29sbGVjdGlvbiA9IG1fd2lu
ZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAgY29sbGVjdGlvbiA9IEhU
TUxOYW1lQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIFdpbmRvd05hbWVkSXRlbXMsIG5hbWUpOwog
ICAgIHJldHVybiBjb2xsZWN0aW9uLmdldCgpOwpAQCAtNDUyNyw3ICs0NTI3LDcgQEAgSFRNTENv
bGxlY3Rpb24qIERvY3VtZW50Ojp3aW5kb3dOYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKIAogSFRNTENvbGxlY3Rpb24qIERvY3VtZW50Ojpkb2N1bWVudE5hbWVkSXRlbXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIE93blB0cjxIVE1MTmFtZUNvbGxlY3Rpb24+
JiBjb2xsZWN0aW9uID0gbV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zLmFkZChuYW1lLmlt
cGwoKSwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8SFRNTE5hbWVDb2xsZWN0
aW9uPiYgY29sbGVjdGlvbiA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFt
ZS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFjb2xsZWN0aW9u
KQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9uOjpjcmVhdGUodGhpcywg
RG9jdW1lbnROYW1lZEl0ZW1zLCBuYW1lKTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5nZXQoKTsK
QEAgLTQ5MjAsNyArNDkyMCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIERvY3VtZW50Ojpn
ZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QKIAogSFRNTENhbnZh
c0VsZW1lbnQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKLSAgICBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52
YXNFbGVtZW50cy5hZGQobmFtZSwgMCkuZmlyc3QtPnNlY29uZDsKKyAgICBSZWZQdHI8SFRNTENh
bnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQobmFtZSwgMCku
aXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIGVsZW1lbnQgPSBI
VE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlKHRoaXMpOwogICAgIHJldHVybiBlbGVtZW50LmdldCgp
OwpAQCAtNTcyMywxMiArNTcyMywxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6
Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBlTmFtZXMpCiAgICAgLy8gSW4gdGhpcyBjYXNlIHdl
IG5lZWQgdG8gY3JlYXRlIGFuIHVuaXF1ZSBzdHJpbmcgaWRlbnRpZmllciB0byBtYXAgc3VjaCBy
ZXF1ZXN0IGluIHRoZSBjYWNoZS4KICAgICBTdHJpbmcgbG9jYWxUeXBlTmFtZXMgPSB0eXBlTmFt
ZXMuaXNOdWxsKCkgPyBTdHJpbmcoImh0dHA6Ly93ZWJraXQub3JnL21pY3JvZGF0YS91bmRlZmlu
ZWRJdGVtVHlwZSIpIDogdHlwZU5hbWVzOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6
TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG5vZGVMaXN0
cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7Ci0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4o
cmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVEYXRhOjpNaWNyb0RhdGFJ
dGVtTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbm9kZUxpc3RzLT5tX21pY3JvRGF0YUl0
ZW1MaXN0Q2FjaGUuYWRkKGxvY2FsVHlwZU5hbWVzLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPE1pY3JvRGF0YUl0ZW1MaXN0PiBsaXN0ID0gTWlj
cm9EYXRhSXRlbUxpc3Q6OmNyZWF0ZSh0aGlzLCB0eXBlTmFtZXMpOwotICAgIHJlc3VsdC5maXJz
dC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxp
c3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDViODk5YjNmNTc4YTI3NDM5ODI0ODU5
OGI5ZDI5YWQ5ODhmMDAzNmUuLjU0OTQwODI1MjhiMjkzMzVlMGM1Mzc3ZTcwYjM0ZDc0ZDU1MjI1
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIGJvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChldmVu
dC0+dGFyZ2V0KCkpOwotICAgIGJvb2wgd2FzQWRkZWQgPSBtX3F1ZXVlZEV2ZW50cy5hZGQoZXZl
bnQpLnNlY29uZDsKKyAgICBib29sIHdhc0FkZGVkID0gbV9xdWV1ZWRFdmVudHMuYWRkKGV2ZW50
KS5pc05ld0VudHJ5OwogICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8g
SXQgc2hvdWxkIG5vdCBoYXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KICAgICAKICAgICBp
ZiAoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoUGFz
c1JlZlB0cjxOb2RlPiB0YXJnZXQsIFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQoKSkuc2Vjb25k
KQorICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKHRhcmdldC5nZXQo
KSkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsRXZlbnQtPnNldFRh
cmdldCh0YXJnZXQpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVl
OjpwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCkKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBmb3Ig
d2hlcmUgd2Ugc2hvdWxkIHN0b3AuCiAgICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250YWlu
cygwKSk7Ci0gICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5zZWNvbmQ7
CisgICAgYm9vbCB3YXNBZGRlZCA9IG1fcXVldWVkRXZlbnRzLmFkZCgwKS5pc05ld0VudHJ5Owog
ICAgIEFTU0VSVF9VTlVTRUQod2FzQWRkZWQsIHdhc0FkZGVkKTsgLy8gSXQgc2hvdWxkIG5vdCBo
YXZlIGFscmVhZHkgYmVlbiBpbiB0aGUgbGlzdC4KIAogICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50
UXVldWU+IHByb3RlY3Rvcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJl
ZE1hcC5jcHAKaW5kZXggYmNiMjNiNDk2MmY2NDY2YmI2MWI4YWViYWZhNDA1ZmVlODhlOTMwMy4u
MDgyYWEwNzQwYTcxY2NkZjUwZTFkNDJkMjNkMzE3ZTYzYWYyZjRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAgLTY5LDE0ICs2OSwxNCBAQCB2b2lkIERv
Y3VtZW50T3JkZXJlZE1hcDo6YWRkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxl
bWVudCkKICAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGtleSkpIHsKICAgICAg
ICAgLy8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBhbHJlYWR5IGluIG1fZHVwbGljYXRlQ291
bnRzLCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCiAgICAgICAgIC8vIGFsc28gbm90IGFscmVhZHkg
aW4gbV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRoYXQgYWRkIHN1Y2NlZWRzLCB3ZSdyZSBk
b25lLgotICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFw
LmFkZChrZXksIGVsZW1lbnQpOwotICAgICAgICBpZiAoYWRkUmVzdWx0LnNlY29uZCkKKyAgICAg
ICAgTWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgZWxlbWVudCk7Cisg
ICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAvLyBUaGUgYWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2FjaGVk
IGluIG1fbWFwLgogICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0
aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcAogICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkg
c28gZ2V0IHNlYXJjaGVzIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgotICAgICAgICBt
X21hcC5yZW1vdmUoYWRkUmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9tYXAucmVtb3ZlKGFkZFJl
c3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRo
aXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAKaW5kZXggNzc0ZTY2NTc0YTZiY2MxZGVjZmE5NjY5NjNkYmE5NjBhYTk5YzQ0OS4uYzFm
ZDRkN2M5NTdhNjRiZmY3ODhmOTAxZTYxZGUwMWNhMDkyMjc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTM0LDExICsxMzQsMTEgQEAgYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW4KICAgICB9CiAKICAgICBpZiAobV9oYXNoTWFwKSB7Ci0gICAgICAgIHBhaXI8
RXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2hhc2hNYXAt
PmFkZChldmVudFR5cGUsIG51bGxwdHIpOwotICAgICAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAg
ICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gYWRvcHRQdHIobmV3IEV2ZW50TGlzdGVu
ZXJWZWN0b3IpOworICAgICAgICBFdmVudExpc3RlbmVySGFzaE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1faGFzaE1hcC0+YWRkKGV2ZW50VHlwZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRv
cHRQdHIobmV3IEV2ZW50TGlzdGVuZXJWZWN0b3IpOwogCi0gICAgICAgIHJldHVybiBhZGRMaXN0
ZW5lclRvVmVjdG9yKHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CisgICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgaWYg
KCFtX3NpbmdsZUV2ZW50TGlzdGVuZXJWZWN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhNWIy
OTY0NzU4MGU0Y2M4NjcxMzRhMGE2NjNmOWMxMmU1MGRmODU0Li4wNDA3NTI3YjIwZDk5NzBmMDBk
NWIxMjQ3YTc5YjVlYzVhYWFkZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODUsOSArMTg1LDkg
QEAgdm9pZCBOb2RlOjpkdW1wU3RhdGlzdGljcygpCiAKICAgICAgICAgICAgICAgICAvLyBUYWcg
c3RhdHMKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUpOwotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIHNpemVf
dD46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQoZWxlbWVudC0+dGFn
TmFtZSgpLCAxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kKys7CisgICAgICAgICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIHNpemVfdD46OkFkZFJlc3VsdCByZXN1bHQgPSBwZXJUYWdDb3VudC5hZGQo
ZWxlbWVudC0+dGFnTmFtZSgpLCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCsrOwog
CiAgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRh
ID0gZWxlbWVudC0+YXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZXMgKz0gYXR0cmlidXRlRGF0YS0+bGVuZ3RoKCk7CkBAIC0xNjEyLDEyICsxNjEyLDEyIEBA
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKQogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZUF0b20g
PSBuYW1lOwogCi0gICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZTo6
aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0
cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKLSAgICBp
ZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0
PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CisgICAgTm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVM
aXN0Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2Rl
TGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7Cisg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFn
Tm9kZUxpc3Q+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgIFJlZlB0cjxUYWdOb2Rl
TGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0OjpjcmVhdGUodGhpcywgc3RhckF0b20sIGxvY2FsTmFt
ZUF0b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOyAgIAogfQogCkBAIC0xNjM1LDM2ICsxNjM1LDM2IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IE5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3Bh
Y2VVCiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRvbSA9IG5hbWU7CiAKLSAgICBwYWly
PE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQKKyAgICBOb2RlTGlzdHNOb2RlRGF0YTo6VGFnTm9kZUxpc3RDYWNoZU5TOjpBZGRSZXN1
bHQgcmVzdWx0CiAgICAgICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRo
aXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9j
YWxOYW1lQXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOwotICAgIGlmICghcmVzdWx0LnNl
Y29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5maXJz
dC0+c2Vjb25kKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4g
UGFzc1JlZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAg
UmVmUHRyPFRhZ05vZGVMaXN0PiBsaXN0ID0gVGFnTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBuYW1l
c3BhY2VVUkkuaXNFbXB0eSgpID8gbnVsbEF0b20gOiBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZUF0
b20pOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgp
OwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5TmFtZShjb25z
dCBTdHJpbmcmIGVsZW1lbnROYW1lKQogewotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6Ok5h
bWVOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZW5zdXJlUmFyZURhdGEo
KS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX25hbWVOb2RlTGlzdENhY2hlLmFkZChlbGVtZW50
TmFtZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXR1cm4gUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIE5vZGVMaXN0c05vZGVE
YXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRh
KCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9uYW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxlbWVu
dE5hbWUsIDApOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQ
YXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQ
dHI8TmFtZU5vZGVMaXN0PiBsaXN0ID0gTmFtZU5vZGVMaXN0OjpjcmVhdGUodGhpcywgZWxlbWVu
dE5hbWUpOwotICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbGlzdC5nZXQoKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnNlY29uZCA9IGxpc3QuZ2V0KCk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lcykKIHsKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVE
YXRhOjpDbGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICBOb2Rl
TGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2RlTGlzdENhY2hlOjpBZGRSZXN1bHQgcmVzdWx0CiAgICAg
ICAgID0gZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNzTm9k
ZUxpc3RDYWNoZS5hZGQoY2xhc3NOYW1lcywgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQot
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQp
OworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRy
PE5vZGVMaXN0PihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBSZWZQdHI8Q2xhc3NO
b2RlTGlzdD4gbGlzdCA9IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlzLCBjbGFzc05hbWVzKTsK
LSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGxpc3QuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0K
IApAQCAtMjU5MSw5ICsyNTkxLDkgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNlcnZl
cnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogICAgICAgICAg
ICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gcmVnaXN0cnkt
PmF0KGkpLmdldCgpOwogICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi0+c2hvdWxkUmVjZWl2
ZU11dGF0aW9uRnJvbSh0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKSkgewogICAgICAgICAgICAg
ICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucyA9IHJlZ2lz
dHJhdGlvbi0+ZGVsaXZlcnlPcHRpb25zKCk7Ci0gICAgICAgICAgICAgICAgcGFpcjxIYXNoTWFw
PFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2Jz
ZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5z
ZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IGRlbGl2
ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQgPSBv
YnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSBkZWxpdmVyeU9wdGlvbnM7CiAKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMjYwNCw5ICsyNjA0LDkgQEAgdm9pZCBOb2RlOjpjb2xs
ZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIqLAogICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0
cmF0aW9uID0gKml0ZXI7CiAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uLT5zaG91bGRSZWNl
aXZlTXV0YXRpb25Gcm9tKHRoaXMsIHR5cGUsIGF0dHJpYnV0ZU5hbWUpKSB7CiAgICAgICAgICAg
ICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVn
aXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBwYWlyPEhhc2hN
YXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25z
Pjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5v
YnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
LnNlY29uZCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gZGVs
aXZlcnlPcHRpb25zOworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNl
cnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6QWRkUmVzdWx0IHJlc3VsdCA9
IG9ic2VydmVycy5hZGQocmVnaXN0cmF0aW9uLT5vYnNlcnZlcigpLCBkZWxpdmVyeU9wdGlvbnMp
OworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kIHw9IGRlbGl2ZXJ5T3B0aW9uczsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNw
cAppbmRleCBhNzQyNjI5NWVmMDY0ZWJlOWMwZmFkZWYwZjY3MDFkNTE2NThkYTNlLi5lMDg1NTA3
MGE3Y2IzMjUzNGNjYmY4YWI4ZDA1MjY2N2RhMzE5ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6aW5pdChj
b25zdCBBdG9taWNTdHJpbmcmIHAsIGNvbnN0IEF0b21pY1N0cmluZyYgbCwgY29uc3QgQXRvCiAg
ICAgaWYgKCFnTmFtZUNhY2hlKQogICAgICAgICBnTmFtZUNhY2hlID0gbmV3IFFOYW1lU2V0Owog
ICAgIFF1YWxpZmllZE5hbWVDb21wb25lbnRzIGNvbXBvbmVudHMgPSB7IHAuaW1wbCgpLCBsLmlt
cGwoKSwgbi5pc0VtcHR5KCkgPyBudWxsQXRvbS5pbXBsKCkgOiBuLmltcGwoKSB9OwotICAgIHBh
aXI8UU5hbWVTZXQ6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBnTmFtZUNhY2hlLT5hZGQ8
UXVhbGlmaWVkTmFtZUNvbXBvbmVudHMsIFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I+KGNvbXBv
bmVudHMpOwotICAgIG1faW1wbCA9ICphZGRSZXN1bHQuZmlyc3Q7ICAgIAotICAgIGlmICghYWRk
UmVzdWx0LnNlY29uZCkKKyAgICBRTmFtZVNldDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGdOYW1l
Q2FjaGUtPmFkZDxRdWFsaWZpZWROYW1lQ29tcG9uZW50cywgUU5hbWVDb21wb25lbnRzVHJhbnNs
YXRvcj4oY29tcG9uZW50cyk7CisgICAgbV9pbXBsID0gKmFkZFJlc3VsdC5pdGVyYXRvcjsKKyAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBtX2ltcGwtPnJlZigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggMDM1YzRhMjFhNzJj
OWNkODQwZTBiMjk2MmNlNjk3NmFkODU2YmNiZS4uOWNjZTdkOTViNWUxMDQ0M2MwM2VkYTViNzJm
MTEyYzU3MDUyZTUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0cmlu
Z0RhdGEoKQogCiBQYXNzUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0U3Ry
aW5nRGF0YTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogewotICAgIFNwYWNl
U3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5m
aXJzdC0+c2Vjb25kOworICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERh
dGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZGF0YSkg
ewogICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZyk7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cAppbmRleCA1NzYxZjUwNmU5MDEwOTE3MzY0NmMxYzkzN2M1MTA3NjNiMWFjMjYzLi4yMjhhYTg2
ZTM1YWE2MzEzODgwOGY5MGVjYzk2OWMyNmRhY2M0MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojp1cGRh
dGVBdHRyaWJ1dGVTdHlsZSgpCiAKICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTo6aXRl
cmF0b3IgY2FjaGVJdGVyYXRvcjsKICAgICBpZiAoY2FjaGVIYXNoKSB7Ci0gICAgICAgIGNhY2hl
SXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gsIG51
bGxwdHIpLmZpcnN0OworICAgICAgICBjYWNoZUl0ZXJhdG9yID0gcHJlc2VudGF0aW9uQXR0cmli
dXRlQ2FjaGUoKS5hZGQoY2FjaGVIYXNoLCBudWxscHRyKS5pdGVyYXRvcjsKICAgICAgICAgaWYg
KGNhY2hlSXRlcmF0b3ItPnNlY29uZCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQtPmtleSAhPSBj
YWNoZUtleSkKICAgICAgICAgICAgIGNhY2hlSGFzaCA9IDA7CiAgICAgfSBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IGQxMWZlZTEyMTgxNWM3Y2ZjN2M5OWQw
MWNlNTQ1NTg3YmUzY2IxYjYuLmMzYTcxNTNjYWU0NWFkNjAxYTg1Yzg1MDk5ZTNmMTUxODk5NzI3
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0zNTksNyArMzU5
LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246OnRhZ3MoY29uc3QgU3Ry
aW5nJiBuYW1lKQogCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjphcHBlbmQoTm9kZUNhY2hlTWFwJiBt
YXAsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIE93
blB0cjxWZWN0b3I8RWxlbWVudCo+ID4mIHZlY3RvciA9IG1hcC5hZGQoa2V5LmltcGwoKSwgbnVs
bHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0
b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
aWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RWxlbWVu
dCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjVkY2EzM2NlNzA0ODhkYjVhODNjZDlm
OTNlZDVjZDFmYThhOWQ2Ny4uZDdmY2I5YWFjMDhlODg1MzY4NmNmZGRiNTFmYTFlMTBkMjk5NDlj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAg
LTIzMywxMiArMjMzLDEyIEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3du
UHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0CiAgICAgRGlmZlRhYmxl
IG9sZFRhYmxlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdMaXN0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3IgaXQgPSBuZXdUYWJsZS5hZGQobmV3
TGlzdFtpXS0+bV9zaGExLCBWZWN0b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgRGlmZlRh
YmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX3NoYTEsIFZlY3Rv
cjxzaXplX3Q+KCkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsKICAg
ICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZExpc3Quc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ld
LT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLmZpcnN0OworICAgICAgICBEaWZmVGFibGU6Oml0
ZXJhdG9yIGl0ID0gb2xkVGFibGUuYWRkKG9sZExpc3RbaV0tPm1fc2hhMSwgVmVjdG9yPHNpemVf
dD4oKSkuaXRlcmF0b3I7CiAgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
ZGNhODFjYWNhYzZiMzg3ZGVlYTZmOTM5N2MwYWNlZTI0MmY2MDY2OS4uMDY0Yjg2MmM5MGI3NTVl
OWY4M2IyYTBmN2NhODFlNDFmMTU0MTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCBpbmxpbmUgdm9p
ZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkKICAgICBkb3Vi
bGUgbWF0Y2hUaW1lTXMgPSBXVEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0
YS5zdGFydFRpbWU7CiAgICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1zOwog
Ci0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9
IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1ha2VLZXkoKSwgUnVsZU1hdGNoaW5nU3RhdHMobV9j
dXJyZW50TWF0Y2hEYXRhLCBtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7Ci0gICAg
aWYgKCFyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnRvdGFs
VGltZSArPSBtYXRjaFRpbWVNczsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuaGl0cyAr
PSAxOworICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9ydWxl
TWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hpbmdTdGF0cyhtX2N1cnJlbnRN
YXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLnRvdGFs
VGltZSArPSBtYXRjaFRpbWVNczsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuaGl0
cyArPSAxOwogICAgICAgICBpZiAobWF0Y2hlZCkKLSAgICAgICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kLm1hdGNoZXMgKz0gMTsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
Lm1hdGNoZXMgKz0gMTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGIzNTJiZDhhNzE1ZTFlMTkxMmM4OTBjZWZkYzhi
NDA2NGRlMjdmNDQuLjBlY2ZkMDk3Mzk4MDNhOWNlNTE4NmU0MGUzNzQwZTIwYzM4NzJlZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
ODgxLDcgKzg4MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltCiAgICAgfQogCiAgICAgKnNl
YXJjaElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7Ci0gICAgU2Vh
cmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRzLmFkZCgqc2Vh
cmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5maXJzdDsKKyAgICBTZWFyY2hSZXN1bHRz
OjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJZCwgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOwogCiAgICAgZm9yIChMaXN0SGFzaFNldDxO
b2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3Vs
dENvbGxlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBwZW5k
KCppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAKaW5kZXggZjJhYWI0YjdmNGY1NzFlY2ZlZGQ5MzI4YTA0NzgxNTkwZDdhY2Jh
OS4uOTI0YmUzODQyOWY3NDA5NjIzYjI2Nzc5MmJhZDA0NTYzM2RjODhmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MzMzLDcgKzMzMyw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrCiAKICAgICBCcmVha3BvaW50
SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJCcmVh
a3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzLmZpbmQoYnJlYWtwb2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRz
SXRlcmF0b3IgPT0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5lbmQo
KSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9p
bnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnNldChicmVha3BvaW50SWQsIFZlY3RvcjxT
dHJpbmc+KCkpLmZpcnN0OworICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRv
ciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFrcG9p
bnRJZCwgVmVjdG9yPFN0cmluZz4oKSkuaXRlcmF0b3I7CiAgICAgZGVidWdTZXJ2ZXJCcmVha3Bv
aW50SWRzSXRlcmF0b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQpOwog
CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0g
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBiM2Y2MTcxOTNiZjQ0OWIyZTYzZTlm
MzJiNWE3MzBkYjYwZDgyNDI2Li5jOTFhZDgyZTY1YmRjMGYxZjlmZTE3NzQ2MzA1YzlhM2RmZWI5
ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0y
ODIsMjEgKzI4MiwyMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OnNldFN0cmluZyhj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBpZiAobV9kYXRh
LnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIHZhbHVl
KS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5saW5l
IHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAg
ICBpZiAobV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuc2Vjb25kKQorICAgIGlmIChtX2RhdGEuc2V0
KG5hbWUsIHZhbHVlKS5pc05ld0VudHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsK
IH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0OjpzZXRBcnJheShjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQogewogICAgIEFTU0VSVCh2
YWx1ZSk7Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgdmFsdWUpLnNlY29uZCkKKyAgICBpZiAo
bV9kYXRhLnNldChuYW1lLCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5hcHBl
bmQobmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZTYyMjljNDRkNTQ2MDBjZjU0YTZj
YjU0Y2EzNmJhMzgyMWVkZTIwNi4uNGU0MjkzOGJiNWQ1N2Q2MTJiZGYzNTBjZjE5MzQwNDAyNDI3
OWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwNjIsMTAgKzEwNjIsMTAgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCB0
eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHBhaXI8RW50cnlNYXA6Oml0
ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BlbmRpbmdFbnRyaWVzLmFkZCh1cmwsIHR5cGUpOwor
ICAgIEVudHJ5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQodXJs
LCB0eXBlKTsKICAgICAKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kIHw9IHR5cGU7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gdHlwZTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggMTZhN2NjZjJkMzVmNjRlZDRiMGU1NzMyMTBhMzY3NTgzNTc0NGRmMS4uNWQxMDNiMmZm
N2I0Y2JhNTRlMDM3YmE2Yzg3OTYyMzA0ZDA1ZWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBA
IC0xMzQsMTEgKzEzNCwxMSBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUgogewogICAgIEFTU0VS
VCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCi0gICAgc3RkOjpwYWly
PENhY2hlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2NhY2hlc0luTWVtb3J5
LmFkZChtYW5pZmVzdFVSTCwgMCk7CisgICAgQ2FjaGVHcm91cE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fY2FjaGVzSW5NZW1vcnkuYWRkKG1hbmlmZXN0VVJMLCAwKTsKICAgICAKLSAgICBpZiAo
IXJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5maXJzdC0+c2Vjb25kKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAgIC8vIExv
b2sgdXAgdGhlIGdyb3VwIGluIHRoZSBkYXRhYmFzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNh
Y2hlR3JvdXAoY29uc3QgS1VSCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZCh1cmxIb3N0SGFz
aChtYW5pZmVzdFVSTCkpOwogICAgIH0KICAgICAKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9
IGdyb3VwOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gZ3JvdXA7CiAgICAgCiAgICAg
cmV0dXJuIGdyb3VwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGE3
MWU4NTE1NDZmYzIwYWI4N2NhNzcyMDU1NjE3NGZjNjY2MmVlN2MuLjI5MzY0Y2Q0MTNmYWRmOTQ5
ZGNlNTBkNTYyZDljMzk4ODRhMzdkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTM1MTYsNyArMzUxNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIEVuc3VyZSB0
aGlzIHRhcmdldCdzIHRvdWNoIGxpc3QgZXhpc3RzLCBldmVuIGlmIGl0IGVuZHMgdXAgZW1wdHks
IHNvIGl0IGNhbiBhbHdheXMgYmUgcGFzc2VkIHRvIFRvdWNoRXZlbnQ6OkNyZWF0ZSBiZWxvdy4K
ICAgICAgICAgVGFyZ2V0VG91Y2hlc01hcDo6aXRlcmF0b3IgdGFyZ2V0VG91Y2hlc0l0ZXJhdG9y
ID0gdG91Y2hlc0J5VGFyZ2V0LmZpbmQodG91Y2hUYXJnZXQuZ2V0KCkpOwogICAgICAgICBpZiAo
dGFyZ2V0VG91Y2hlc0l0ZXJhdG9yID09IHRvdWNoZXNCeVRhcmdldC5lbmQoKSkKLSAgICAgICAg
ICAgIHRhcmdldFRvdWNoZXNJdGVyYXRvciA9IHRvdWNoZXNCeVRhcmdldC5zZXQodG91Y2hUYXJn
ZXQuZ2V0KCksIFRvdWNoTGlzdDo6Y3JlYXRlKCkpLmZpcnN0OworICAgICAgICAgICAgdGFyZ2V0
VG91Y2hlc0l0ZXJhdG9yID0gdG91Y2hlc0J5VGFyZ2V0LnNldCh0b3VjaFRhcmdldC5nZXQoKSwg
VG91Y2hMaXN0OjpjcmVhdGUoKSkuaXRlcmF0b3I7CiAKICAgICAgICAgLy8gdG91Y2hlcyBhbmQg
dGFyZ2V0VG91Y2hlcyBzaG91bGQgb25seSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRvdWNo
ZXMgc3RpbGwgb24gdGhlIHNjcmVlbiwgc28gaWYgdGhpcyBwb2ludCBpcwogICAgICAgICAvLyBy
ZWxlYXNlZCBvciBjYW5jZWxsZWQgaXQgd2lsbCBvbmx5IGFwcGVhciBpbiB0aGUgY2hhbmdlZFRv
dWNoZXMgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA3MzFlMWZjMDc5YjVm
ZTlmYjM5MDBmYjU3YmYzNmUxZDk2NmE4ZmIyLi5mOTM5YzliZmQyYTM3NjE5ZjY1NzdiZjdkMjVm
ZGYxNzJiM2EwNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC05MCwxNSArOTAs
MTUgQEAgUGFnZUdyb3VwKiBQYWdlR3JvdXA6OnBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAgICAgIHBhZ2VHcm91cHMgPSBuZXcgUGFn
ZUdyb3VwTWFwOwogCi0gICAgcGFpcjxQYWdlR3JvdXBNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKKyAgICBQYWdlR3JvdXBNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBwYWdlR3JvdXBzLT5hZGQoZ3JvdXBOYW1lLCAwKTsKIAotICAgIGlm
IChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCghcmVzdWx0LmZpcnN0LT5zZWNvbmQp
OwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBQYWdlR3JvdXAoZ3JvdXBOYW1l
KTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbmV3
IFBhZ2VHcm91cChncm91cE5hbWUpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuZmlyc3Qt
PnNlY29uZCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgIEFTU0VSVChy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQpAQCAtMTk3LDcg
KzE5Nyw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoTGlua0hhc2gg
aGFzaCkKIHsKICAgICBBU1NFUlQoc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwogI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkKLSAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLnNl
Y29uZCkKKyAgICBpZiAoIW1fdmlzaXRlZExpbmtIYXNoZXMuYWRkKGhhc2gpLmlzTmV3RW50cnkp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQo
dGhpcywgaGFzaCk7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJT
Y3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291cmMK
ICAgICBPd25QdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2VyU2Ny
aXB0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwgaW5q
ZWN0ZWRGcmFtZXMpKTsKICAgICBpZiAoIW1fdXNlclNjcmlwdHMpCiAgICAgICAgIG1fdXNlclNj
cmlwdHMgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdE1hcCk7Ci0gICAgT3duUHRyPFVzZXJTY3Jp
cHRWZWN0b3I+JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVs
bHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZlY3Rvcj4mIHNjcmlw
dHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+
c2Vjb25kOwogICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNjcmlwdHNJbldvcmxk
ID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlwdHNJbldvcmxkLT5h
cHBlbmQodXNlclNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgUGFn
ZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
Y29uc3QgU3RyaW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVl
dCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBi
bGFja2xpc3QsIGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICghbV91c2VyU3R5bGVT
aGVldHMpCiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJTdHls
ZVNoZWV0TWFwKTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNoZWV0
c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5maXJzdC0+
c2Vjb25kOworICAgIE93blB0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5X
b3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQod29ybGQsIG51bGxwdHIpLml0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgaWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCiAgICAgICAgIHN0eWxlU2hlZXRz
SW5Xb3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldFZlY3Rvcik7CiAgICAgc3R5bGVT
aGVldHNJbldvcmxkLT5hcHBlbmQodXNlclN0eWxlU2hlZXQucmVsZWFzZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggOTMxZjI2MDNmZDRmMjIxYjRiNWRlM2Fj
ZGMzN2Q5NzZkMTNkZjIyNy4uYzJhNWFiMTE0MzVlZjZkYjA1NzY4Yzc2Y2EwMzU3YjU2MjU4MzMx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTEzMSwxMSArMTMx
LDExIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0
cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBwYWlyPE9y
aWdpbkFjY2Vzc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgp
LmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAg
ICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPcmlnaW5BY2Nlc3NXaGl0
ZUxpc3QpOworICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFj
Y2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihuZXcg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KTsKIAotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlz
dCA9IHJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAgIGxpc3QtPmFwcGVu
ZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFp
biwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dT
dWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXggZGQwNTQ2MThkMGY4
MGE4MDI2MjY4NWQ4YjBmNGE5OTdiYjEzYjUzOC4uZGE2M2FmYTY0ZGNjNTEyYjQ1N2IxYTBjNTZh
OTkyYTY3ZGE0OWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApA
QCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxp
c3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICAg
ICAgcmVzcG9uZGluZ05vZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250
aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9u
ZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQgbGF0ZXIuCiAgICAgICAgICAgICAgICAgZm9yICh2aXNp
dGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2
aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcGFpcjxIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgIEhh
c2hTZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJz
U2V0LmFkZCh2aXNpdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRleCA0YjgyM2IxMmI3OGI2NWRjYzc1
YmMxMTE3NjI2ODE0MDY2ZjI4NWY5Li40YmM3YzJlNjA3ZWFiM2UwYjQ3MzYwYTYyMjZlMWEyN2E1
MjA4YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9w
ZXJ0eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0JpbmFyeVByb3Bl
cnR5TGlzdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBs
YW46OndyaXRlSW50ZWdlcihpbnQgaW50ZWdlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgbV9pbnRlZ2VyWmVyb09iamVjdFJlZmVyZW5jZSA9IG1fY3VycmVudE9iamVjdFJlZmVyZW5j
ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1faW50ZWdlcnMuYWRkKGludGVnZXIsIG1f
Y3VycmVudE9iamVjdFJlZmVyZW5jZSkuc2Vjb25kKQorICAgICAgICBpZiAoIW1faW50ZWdlcnMu
YWRkKGludGVnZXIsIG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSkuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgKyttX2N1cnJlbnRPYmplY3RSZWZlcmVuY2U7CkBA
IC0yMTQsNyArMjE0LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVn
ZXIoaW50IGludGVnZXIpCiB2b2lkIEJpbmFyeVByb3BlcnR5TGlzdFBsYW46OndyaXRlU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgICsrbV9jdXJyZW50QWdncmVnYXRlU2l6ZTsK
LSAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2Up
LnNlY29uZCkKKyAgICBpZiAoIW1fc3RyaW5ncy5hZGQoc3RyaW5nLCBtX2N1cnJlbnRPYmplY3RS
ZWZlcmVuY2UpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKICAgICArK21fY3VycmVudE9i
amVjdFJlZmVyZW5jZTsKICAgICB3cml0ZVN0cmluZ09iamVjdChzdHJpbmcpOwpAQCAtMjI0LDEy
ICsyMjQsMTIgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXJBcnJh
eShjb25zdCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBzaXplX3Qgc2F2ZWRB
Z2dyZWdhdGVTaXplID0gKyttX2N1cnJlbnRBZ2dyZWdhdGVTaXplOwogICAgIEFTU0VSVChzaXpl
KTsKLSAgICBwYWlyPEludGVnZXJBcnJheU1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9
IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJzLCBzaXplKSwgMCk7Ci0g
ICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKQorICAgIEludGVnZXJBcnJheU1hcDo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1faW50ZWdlckFycmF5cy5hZGQoSW50ZWdlckFycmF5KGludGVnZXJzLCBz
aXplKSwgMCk7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3cml0ZUlu
dGVnZXIoaW50ZWdlcnNbaV0pOwotICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbV9jdXJy
ZW50T2JqZWN0UmVmZXJlbmNlKys7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBt
X2N1cnJlbnRPYmplY3RSZWZlcmVuY2UrKzsKICAgICB3cml0ZUFycmF5T2JqZWN0KHNpemUpOwog
ICAgIG1fY3VycmVudEFnZ3JlZ2F0ZVNpemUgPSBzYXZlZEFnZ3JlZ2F0ZVNpemU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
VGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcAppbmRleCAxYjVhNzMxOWU0MmQ5ZGYxNGJkMjU5NTExMzE5MTYyZTg3MTVj
MTc1Li5kNTE3YWFhN2I0MDI0NDg5MzJkZDQyYmY5ZGFiNDBkMTAyYThkMmM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJUaWxlci5jcHAKQEAgLTQyOCwxOCArNDI4LDE4IEBAIHZvaWQgTGF5ZXJUaWxlcjo6cHJvY2Vz
c1RleHR1cmVKb2IoY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpvYnNN
CiB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUluZGV4JiBpbmRleCwgY29u
c3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSm9ic01hcCYgdGlsZUpvYnNNYXApCiB7CiAgICAgLy8g
SGFzaE1hcDo6YWRkIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaXRlcmF0b3IgZXZlbiB0aGUga2V5
IGFscmVhZHkgZXhpc3RzLgotICAgIHBhaXI8VGlsZUpvYnNNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSB0aWxlSm9ic01hcC5hZGQoaW5kZXgsICZqb2IpOworICAgIFRpbGVKb2JzTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gdGlsZUpvYnNNYXAuYWRkKGluZGV4LCAmam9iKTsKIAogICAgIC8v
IFN1Y2Nlc3NmdWxseSBhZGRlZCB0aGUgbmV3IGpvYi4KLSAgICBpZiAocmVzdWx0LnNlY29uZCkK
KyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElu
IHRoaXMgY2FzZSB3ZSBsZWF2ZSB0aGUgcHJldmlvdXMgam9iLgotICAgIGlmIChqb2IubV90eXBl
ID09IFRleHR1cmVKb2I6OkRpcnR5Q29udGVudHMgJiYgcmVzdWx0LmZpcnN0LT5zZWNvbmQtPm1f
dHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAgaWYgKGpvYi5tX3R5cGUg
PT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+
bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICByZXN1bHQuZmlyc3QtPnNl
Y29uZCA9ICZqb2I7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSAmam9iOwogfQogCiB2
b2lkIExheWVyVGlsZXI6OnBlcmZvcm1UaWxlSm9iKExheWVyVGlsZSogdGlsZSwgY29uc3QgVGV4
dHVyZUpvYiYgam9iLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IGY2Y2NiOTVkN2U3MTBhM2MxM2Y2MWYyMjAzNjc4MGViZWI2Nzc1YjMuLjFjMDFiNjljODIyZjE0
MmIzMzY5YjU5NTc3MjFhNzQyMWIzZTI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjQ4OCwxNiAr
MjQ4OCwxNiBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpm
aW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbAogICAgIC8vIEFkZCB3aXRoIGEgZHVt
bXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uLCBh
bmQgYSBib29sZWFuIHRoYXQgdGVsbHMKICAgICAvLyB1cyB3aGV0aGVyIHRoZXJlJ3MgYW4gaXRl
bSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1cHMuCiAgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1hcDo6aXRlcmF0b3Is
IGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKLSAgICBpZiAo
IWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICBMYXllck1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgIC8vIFZhbHVlIHdhcyBub3QgYWRkZWQsIHNvIGl0IGV4aXN0cyBhbHJl
YWR5LgotICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgp
OworICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3VyY2VM
YXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1bHRMYXllci0+
c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9uZUlEWzBV
XSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAgICAgIGFkZFJl
c3VsdC5maXJzdC0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CisgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdExh
eWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1RpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ2FjaGUubW0KaW5kZXggZDkzMmMxZjcyMzEyZTBlOGM4ODk3NDdjZmJhMTliZjdlMmE1ZDUw
Zi4uMDk3ZGZiZmM2YzA1YjU3ZmJlNGJkMjc1OTVlODViYzA1MGM5YTdhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCkBA
IC0zNjQsNyArMzY0LDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAgICAg
ICAgICAgICBUaWxlSW5kZXggdGlsZUluZGV4KHgsIHkpOwogCiAgICAgICAgICAgICBJbnRSZWN0
IHRpbGVSZWN0ID0gcmVjdEZvclRpbGVJbmRleCh0aWxlSW5kZXgpOwotICAgICAgICAgICAgUmV0
YWluUHRyPFdlYlRpbGVMYXllcj4mIHRpbGVMYXllciA9IG1fdGlsZXMuYWRkKHRpbGVJbmRleCwg
MCkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+JiB0
aWxlTGF5ZXIgPSBtX3RpbGVzLmFkZCh0aWxlSW5kZXgsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgICAgICAgICBpZiAoIXRpbGVMYXllcikgewogICAgICAgICAgICAgICAgIHRpbGVMYXllciA9
IGNyZWF0ZVRpbGVMYXllcih0aWxlUmVjdCk7CiAgICAgICAgICAgICAgICAgW21fdGlsZUNvbnRh
aW5lckxheWVyLmdldCgpIGFkZFN1YmxheWVyOnRpbGVMYXllci5nZXQoKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1
c2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJD
aGFuZ2VzRmx1c2hlci5jcHAKaW5kZXggMDBjNjMwODBkZmM3N2U0YjhjNDJiMTZlNmRhNjgwOTk5
OTE3N2RhOC4uYjRmZWFlZTY4MmQ4YzQ0NTlhODJiZmE2ZGQ5ZGVmNjk2NmEzYWIzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcApAQCAtNDksNyArNDksNyBAQCBMYXllckNoYW5nZXNG
bHVzaGVyOjpMYXllckNoYW5nZXNGbHVzaGVyKCkKIAogdm9pZCBMYXllckNoYW5nZXNGbHVzaGVy
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3Qq
IGhvc3QpCiB7Ci0gICAgaWYgKCFtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoLmFkZChob3N0KS5z
ZWNvbmQgfHwgbV9ob29rKQorICAgIGlmICghbV9ob3N0c1dpdGhDaGFuZ2VzVG9GbHVzaC5hZGQo
aG9zdCkuaXNOZXdFbnRyeSB8fCBtX2hvb2spCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldEhv
b2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAppbmRleCA3MTFiODk2YWM2
MTI4ODM2MmVkNzJlZGY3MmE0NzA5MmZlNzIyNGJlLi5jYzUyYzUyZWI3MDU3ODJkZTFmOTY4ZGM4
MDNjNDVlNGYyYWUyMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwCkBA
IC00MTQsOCArNDE0LDggQEAgYm9vbCBnZXREZXJpdmVkRm9udERhdGEoY29uc3QgVUNoYXIqIGZh
bWlseSwKICAgICAgICAgLy8gYSBmb250IGV2ZW4gaWYgdGhlcmUncyBubyBmb250IG1hdGNoaW5n
IHRoZSBuYW1lLiBOZWVkIHRvCiAgICAgICAgIC8vIGNoZWNrIGl0IGFnYWluc3Qgd2hhdCB3ZSBh
Y3R1YWxseSB3YW50IChhcyBpcyBkb25lIGluCiAgICAgICAgIC8vIEZvbnRDYWNoZVdpbi5jcHAp
Ci0gICAgICAgIHBhaXI8Rm9udERhdGFDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gZm9u
dERhdGFDYWNoZS5hZGQoZm9udEtleSwgRm9udERhdGEoKSk7Ci0gICAgICAgIGRlcml2ZWQgPSAm
ZW50cnkuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgRm9udERhdGFDYWNoZTo6QWRkUmVzdWx0IGVu
dHJ5ID0gZm9udERhdGFDYWNoZS5hZGQoZm9udEtleSwgRm9udERhdGEoKSk7CisgICAgICAgIGRl
cml2ZWQgPSAmZW50cnkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgZGVyaXZlZC0+aGZvbnQg
PSBDcmVhdGVGb250SW5kaXJlY3QobG9nZm9udCk7CiAgICAgICAgIC8vIEdldEFzY2VudCBtYXkg
cmV0dXJuIGtVbmRlZmluZWRBc2NlbnQsIGJ1dCB3ZSBzdGlsbCB3YW50IHRvCiAgICAgICAgIC8v
IGNhY2hlIGl0IHNvIHRoYXQgd2Ugd29uJ3QgaGF2ZSB0byBjYWxsIENyZWF0ZUZvbnRJbmRpcmVj
dCBvbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKaW5kZXggMzcyYTBlMDhlOGYzYjI3Yzc0NWViNDViMTUyMzUzOTRlNzIwMjZjYi4uOThlZjI1
NGFhOThmNTgyMjg3ZjI0NjE4MjI3NzA2ODY0NGZjNGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JU
YXJnZXRBdmFpbGFiaWxpdHkoZG91CiAgICAgICAgICAgICAvLyBvZiBibG9ja2VkIHByb3BlcnRp
ZXMuCiAgICAgICAgICAgICBib29sIG51bGxJbnRlcnNlY3Rpb24gPSB0cnVlOwogICAgICAgICAg
ICAgZm9yIChUYXJnZXRQcm9wZXJ0aWVzOjppdGVyYXRvciBwSXRlciA9IGVucXVldWVkUHJvcGVy
dGllcy5iZWdpbigpOyBwSXRlciAhPSBlbnF1ZXVlZFByb3BlcnRpZXMuZW5kKCk7ICsrcEl0ZXIp
IHsKLSAgICAgICAgICAgICAgICBpZiAoIWJsb2NrZWRQcm9wZXJ0aWVzLmFkZCgqcEl0ZXIpLnNl
Y29uZCkKKyAgICAgICAgICAgICAgICBpZiAoIWJsb2NrZWRQcm9wZXJ0aWVzLmFkZCgqcEl0ZXIp
LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIG51bGxJbnRlcnNlY3Rpb24gPSBmYWxz
ZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAK
aW5kZXggMDQzN2JjZGZjMDliOTY3ZGE3ZmUxOTZmMjdiZjJlMGU3MTIyZWQ5OS4uYmU5Zjc0MTA0
ZmU3NDM0NDU3MTU2NDE2M2NmN2FhZDcwZTA3MmM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwCkBAIC0yNzgsMTUgKzI3OCwxNSBAQCBzdGF0aWMgdm9pZCBkaXNhYmxl
TGlnYXR1cmVzKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgQVRTVVN0eWxlIGF0c3VT
dHlsZQogc3RhdGljIEFUU1VTdHlsZSBpbml0aWFsaXplQVRTVVN0eWxlKGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBmb250RGF0YSwgVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1cmVz
KQogewogICAgIHVuc2lnbmVkIGtleSA9IHR5cGVzZXR0aW5nRmVhdHVyZXMgKyAxOwotICAgIHBh
aXI8SGFzaE1hcDx1bnNpZ25lZCwgQVRTVVN0eWxlPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3Vs
dCA9IGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5hZGQoa2V5LCAwKTsKLSAgICBBVFNVU3R5bGUm
IGF0c3VTdHlsZSA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kOwotICAgIGlmICghYWRkUmVzdWx0
LnNlY29uZCkKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBBVFNVU3R5bGU+OjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gZm9udERhdGEtPm1fQVRTVVN0eWxlTWFwLmFkZChrZXksIDApOworICAgIEFUU1VT
dHlsZSYgYXRzdVN0eWxlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CisgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIGF0c3VTdHlsZTsKIAogICAgIEFU
U1VGb250SUQgZm9udElEID0gZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpID8gQ1RG
b250R2V0UGxhdGZvcm1Gb250KGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkg
OiAwOwogICAgIGlmICghZm9udElEKSB7CiAgICAgICAgIExPR19FUlJPUigidW5hYmxlIHRvIGdl
dCBBVFNVRm9udElEIGZvciAlcCIsIGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5mb250KCkpOwot
ICAgICAgICBmb250RGF0YS0+bV9BVFNVU3R5bGVNYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7
CisgICAgICAgIGZvbnREYXRhLT5tX0FUU1VTdHlsZU1hcC5yZW1vdmUoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVU
ZXh0LmNwcAppbmRleCA4MzJiYjlkZGY4ZGExMjk4ZmQzOTMyNTYyODRkMDRlNjM1OGYyNDI2Li4w
NTE5Mzc0MmM1ODUyZGJlOWM5Y2VkNjRiOWEwN2FhZDJjMWVhNDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwCkBAIC00Miw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENG
RGljdGlvbmFyeVJlZiBTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKFR5cGVz
ZXR0aW5nRmVhdHVyZXMgdHlwZXNldHRpbmdGZWF0dXJlcywgRm9udE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKSBjb25zdAogewogICAgIHVuc2lnbmVkIGtleSA9IHR5cGVzZXR0aW5nRmVhdHVyZXMg
KyAxOwotICAgIHBhaXI8SGFzaE1hcDx1bnNpZ25lZCwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gPjo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFk
ZChrZXksIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+KCkpOwotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+JiBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5maXJzdC0+c2Vj
b25kOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiA+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9DRlN0
cmluZ0F0dHJpYnV0ZXMuYWRkKGtleSwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4oKSk7Cisg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CisgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpOwogICAgIAogICAgIGJv
b2wgdHJlYXRMaW5lQXNWZXJ0aWNhbCA9IG9yaWVudGF0aW9uID09IFZlcnRpY2FsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhTWFjLm1tCmluZGV4IDhmNGE5MTkzZWY0ZDUzMjcxYmU1NGIwZGM1ZWZiZDlkZWJhYmRjNDUu
Ljc0YjI2ODZkNmNlNjBiYmZhNzBhYTBiMjI1MzM1Yjk2MDMyMzY0YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFN
YWMubW0KQEAgLTQ0MCw5ICs0NDAsOSBAQCBib29sIFNpbXBsZUZvbnREYXRhOjpjYW5SZW5kZXJD
b21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGVycwogICAgIGlm
ICghbV9jb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQpCiAgICAgICAgIG1fY29tYmlu
aW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0ID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8U3RyaW5n
LCBib29sPik7CiAKLSAgICBwYWlyPFdURjo6SGFzaE1hcDxTdHJpbmcsIGJvb2w+OjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9jb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQt
PmFkZChTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSwgZmFsc2UpOwotICAgIGlmICghYWRkUmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kOworICAg
IFdURjo6SGFzaE1hcDxTdHJpbmcsIGJvb2w+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9jb21i
aW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQtPmFkZChTdHJpbmcoY2hhcmFjdGVycywgbGVu
Z3RoKSwgZmFsc2UpOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJl
dHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIFJldGFpblB0cjxDR0ZvbnRS
ZWY+IGNnRm9udChBZG9wdENGLCBDVEZvbnRDb3B5R3JhcGhpY3NGb250KHBsYXRmb3JtRGF0YSgp
LmN0Rm9udCgpLCAwKSk7CiAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIFNpbXBsZUZvbnREYXRh
OjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFj
dGVycwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5m
aXJzdC0+c2Vjb25kID0gdHJ1ZTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHRy
dWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNjky
ZmQ2ZDBkMWYxZGI4MWFkMjk3MmEzZjMzNDM3YmVmNmZlNjM1ZC4uMTk3OTBhZDQ5YjMzMDNkZDdi
NjJjN2U3YTBhODIzNjc3YjRjZmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTI4NSwx
MSArMjg1LDExIEBAIFBhc3NSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+IEZpeGVkU2l6ZUZvbnRE
YXRhOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pCiBzdGF0aWMgUGFzc1JlZlB0cjxG
aXhlZFNpemVGb250RGF0YT4gY3JlYXRlRml4ZWRTaXplRm9udERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHksIHVuc2lnbmVkIHdlaWdodCwgYm9vbCBpdGFsaWMpCiB7CiAgICAgRml4ZWRT
aXplRm9udERhdGFLZXkga2V5KGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOwotICAgIHBhaXI8Rml4
ZWRTaXplRm9udENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZ19maXhlZFNpemVGb250
Q2FjaGUuYWRkKGtleSwgUmVmUHRyPEZpeGVkU2l6ZUZvbnREYXRhPigpKTsKLSAgICBpZiAocmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBGaXhlZFNpemVGb250
RGF0YTo6Y3JlYXRlKGZhbWlseSwgd2VpZ2h0LCBpdGFsaWMpOworICAgIEZpeGVkU2l6ZUZvbnRD
YWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGdfZml4ZWRTaXplRm9udENhY2hlLmFkZChrZXksIFJl
ZlB0cjxGaXhlZFNpemVGb250RGF0YT4oKSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IEZpeGVkU2l6ZUZvbnREYXRhOjpjcmVh
dGUoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7CiAKLSAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5z
ZWNvbmQ7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogfQogCiBzdGF0aWMg
TE9ORyB0b0dESUZvbnRXZWlnaHQoRm9udFdlaWdodCBmb250V2VpZ2h0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcAppbmRleCBhNjY5YmM4ZWY4
NTIzZDQ4NjZmMWViODBhMjUxMjMzMDJhZDRjNDViLi43MjBmMGZkMzYwMWFkNTVjNDFmMDQ4ZGEz
OGU5MGIxNDBjNzg0MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGszLmNwcApAQCAtNzcsOSArNzcsOSBAQCBzdGF0aWMgU3R5bGVDb250ZXh0TWFw
JiBzdHlsZUNvbnRleHRNYXAoKQogCiBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNv
bnRleHQoR1R5cGUgd2lkZ2V0VHlwZSkKIHsKLSAgICBzdGQ6OnBhaXI8U3R5bGVDb250ZXh0TWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3R5bGVDb250ZXh0TWFwKCkuYWRkKHdpZGdldFR5
cGUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5m
aXJzdC0+c2Vjb25kLmdldCgpOworICAgIFN0eWxlQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IHN0eWxlQ29udGV4dE1hcCgpLmFkZCh3aWRnZXRUeXBlLCAwKTsKKyAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0
KCk7CiAKICAgICBHdGtXaWRnZXRQYXRoKiBwYXRoID0gZ3RrX3dpZGdldF9wYXRoX25ldygpOwog
ICAgIGd0a193aWRnZXRfcGF0aF9hcHBlbmRfdHlwZShwYXRoLCB3aWRnZXRUeXBlKTsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBzdGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNvbnRleHQoR1R5
cGUgd2lkZ2V0VHlwZSkKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfcGF0aChjb250ZXh0Lmdl
dCgpLCBwYXRoKTsKICAgICBndGtfd2lkZ2V0X3BhdGhfZnJlZShwYXRoKTsKIAotICAgIHJlc3Vs
dC5maXJzdC0+c2Vjb25kID0gY29udGV4dDsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGNvbnRleHQ7CiAgICAgcmV0dXJuIGNvbnRleHQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQppbmRleCA0NzkyMTkxOTY4NmY3YWFjNjM2ZDkx
Mjk0ZmYxNGUxMDM0ZjQ3M2RlLi44OWZlZjAzMDljOTQ5OTQyZTI0ZGExYzI2ZDM5YTU4ZDU3ZDE0
NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2su
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCkBAIC0x
MDMsNyArMTAzLDcgQEAgdm9pZCBXZWJDb3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBXZWJDb3JlOjpUaHJlYWRWaW9sYXRpb24KICAgICAgICAgY2FzZSBOb1Ro
cmVhZENoZWNrOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9nT25GaXJzdFRo
cmVhZFZpb2xhdGlvbjoKLSAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuYWRkKGZ1bmN0
aW9uKS5zZWNvbmQpIHsKKyAgICAgICAgICAgIGlmIChsb2dnZWRGdW5jdGlvbnMuYWRkKGZ1bmN0
aW9uKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJXZWJLaXQgVGhyZWFk
aW5nIFZpb2xhdGlvbiAtICVzIGNhbGxlZCBmcm9tIHNlY29uZGFyeSB0aHJlYWQiLCBmdW5jdGlv
bik7CiAgICAgICAgICAgICAgICAgTlNMb2coQCJBZGRpdGlvbmFsIHRocmVhZGluZyB2aW9sYXRp
b25zIGZvciB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGJlIGxvZ2dlZC4iKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
Y3BwCmluZGV4IDQ0YzU2ODFmYmJkNTM0OGIyMDE0OTM1MWZhMzY4MzJkNzk1ODI2MjguLjUwMDkx
ZTE5ZDNhZjU2ZmY0YThkZjE3NWJmODk3ODcwMDc2MTQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApAQCAtNzIsNyArNzIsNyBA
QCBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QKICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPjo6Z2V0KG5hbWUpOwogfQogCi1wYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29s
PiBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQorSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IEhUVFBIZWFkZXJNYXA6OmFkZChj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZChu
YW1lLCB2YWx1ZSk7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBIVFRQSGVhZGVyTWFwOjpj
b250YWlucyhjb25zdCBjaGFyKiBuYW1lKSBjb25zdAogICAgIHJldHVybiBmaW5kPGNvbnN0IGNo
YXIqLCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yPihuYW1lKSAhPSBlbmQoKTsKIH0KIAot
cGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitIVFRQSGVhZGVyTWFwOjpBZGRS
ZXN1bHQgSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VG
b2xkaW5nSGFzaD46OmFkZDxjb25zdCBjaGFyKiwgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRv
cj4obmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaAppbmRleCAwMjA3MWUzNjEwYzFkNGI0ZmNkZjRkNmM5NTliNDlmODdm
M2E1ZjE1Li4xMmJkZTA2ODk3ZTdjZTNmM2VjOTAxMmUxYzM3ZmRmZmU4ZDg5YzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNTEs
MTIgKzUxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIFN0cmlu
ZyBnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAotICAgICAgICBwYWlyPGl0
ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKKyAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgICAgIC8vIEFsdGVybmF0ZSBhY2Nlc3NvcnMg
dGhhdCBhcmUgZmFzdGVyIHRoYW4gY29udmVydGluZyB0aGUgY2hhciogdG8gQXRvbWljU3RyaW5n
IGZpcnN0LgogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIGdldChjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgICAgIHBhaXI8aXRlcmF0b3Is
IGJvb2w+IGFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICAg
ICAgQWRkUmVzdWx0IGFkZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
ICAgICAgICAgCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggNDNhNjRlOTcwNzI0MDQwNDIy
N2RjYjBkNWUyNTZkMzc0Yjg3MzU5YS4uMzUwOTc5MjkyNzhjNzYwNjRjNGIwZGViOWFmZTM5ZmYx
OWJlNGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zNzEsOSArMzcxLDkgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpzZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkK
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgCiB7CiAgICAgdXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7Ci0gICAgcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9odHRwSGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7IAotICAgIGlmICghcmVz
dWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgKz0gIiwiICsgdmFsdWU7
CisgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1faHR0cEhlYWRlckZpZWxk
cy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsIiArIHZhbHVlOwogCiAgICAgaWYgKHVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRh
dGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmlu
ZGV4IDNlNTk4YmFiNmI5YTg1MGE1YTZjYzkyOGMwMDY5YzA4OTNhODEwOWUuLjZlODE0YWViNWVm
OWQ2M2UwNjIwZmFiODJiNmIyZDczNjY2ZjM1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFz
ZTo6YWRkKFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4gcHJwUGFja2FnZSkKIAogICAgIFJlZlB0
cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gcHJwUGFja2FnZTsKIAotICAgIGlmICghbV9wbHVn
aW5zLmFkZChwYWNrYWdlKS5zZWNvbmQpCisgICAgaWYgKCFtX3BsdWdpbnMuYWRkKHBhY2thZ2Up
LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fcGx1Z2luc0J5UGF0
aC5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lk
IFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAgICAgICAg
IFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFj
a2FnZUZyb21DYWNoZShwYXRoLCBsYXN0TW9kaWZpZWQsIG5hbWUsIGRlc2MsIG1pbWVEZXNjKTsK
IAotICAgICAgICBpZiAocGFja2FnZSAmJiBjYWNoZWRQbHVnaW5zLmFkZChwYWNrYWdlKS5zZWNv
bmQpIHsKKyAgICAgICAgaWYgKHBhY2thZ2UgJiYgY2FjaGVkUGx1Z2lucy5hZGQocGFja2FnZSku
aXNOZXdFbnRyeSkgewogICAgICAgICAgICAgY2FjaGVkUGx1Z2luUGF0aHNXaXRoVGltZXMuYWRk
KHBhY2thZ2UtPnBhdGgoKSwgcGFja2FnZS0+bGFzdE1vZGlmaWVkKCkpOwogICAgICAgICAgICAg
Y2FjaGVkUGx1Z2luc0J5UGF0aC5hZGQocGFja2FnZS0+cGF0aCgpLCBwYWNrYWdlKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJh
c2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4u
Y3BwCmluZGV4IDI3MTIxYzY2NGUzYzZiNmJjNmI1ZDZlZGRiYmFiYmNmNzJiNzY5ZWQuLmZmYjQy
MWE0YzQyOGFjZTkyNGRmMzMzZTBhMDA4NTE5NjM2MTAxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNl
dDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gKml0ICsgIlxcIiArIGZpbGVuYW1lOwotICAgICAg
ICAgICAgaWYgKCF1bmlxdWVGaWxlbmFtZXMuYWRkKGZ1bGxQYXRoKS5zZWNvbmQpCisgICAgICAg
ICAgICBpZiAoIXVuaXF1ZUZpbGVuYW1lcy5hZGQoZnVsbFBhdGgpLmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHBhdGhzLmFkZChmdWxsUGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA2NTcwNzQ3N2Q3
MDUyMGY2ODY0NjA4N2MxMmE3MjFmZjI0ZWY2ZDNiLi44MzYyYWFlM2U2NzUyYTExMjdhMGM5YzA1
ZDU2OTdjNjcwZmIxZWYzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTM4MzMsNyArMzgzMyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZFBlcmNlbnRIZWln
aHREZXNjZW5kYW50KFJlbmRlckJveCogZGVzY2VuZGFudCkKICAgICAgICAgZGVzY2VuZGFudFNl
dCA9IG5ldyBIYXNoU2V0PFJlbmRlckJveCo+OwogICAgICAgICBnUGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzTWFwLT5zZXQodGhpcywgZGVzY2VuZGFudFNldCk7CiAgICAgfQotICAgIGJvb2wgYWRk
ZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoZGVzY2VuZGFudCkuc2Vjb25kOworICAgIGJvb2wgYWRk
ZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoZGVzY2VuZGFudCkuaXNOZXdFbnRyeTsKICAgICBpZiAo
IWFkZGVkKSB7CiAgICAgICAgIEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+Z2V0
KGRlc2NlbmRhbnQpKTsKICAgICAgICAgQVNTRVJUKGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFw
LT5nZXQoZGVzY2VuZGFudCktPmNvbnRhaW5zKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggZTVkNTliYjhlMGEy
MWQyZTM2MDA3NjA3OTg1Y2ExN2NiMzZkYTIyNi4uOWRkMjE4MTI1MDI1ZjI5M2E4NmI1NjU5N2M4
Yjc2ZjIxODRjZDVmMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTY2MiwxNCArNjYyLDE0IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXh0UnVuKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIEJp
ZGlSdW4qIHJ1CiAgICAgcnVuLT5tX2JveC0+c2V0TG9naWNhbFdpZHRoKHJlbmRlcmVyLT53aWR0
aChydW4tPm1fc3RhcnQsIHJ1bi0+bV9zdG9wIC0gcnVuLT5tX3N0YXJ0LCB4UG9zLCBsaW5lSW5m
by5pc0ZpcnN0TGluZSgpLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3cpICsgaHlwaGVu
V2lkdGgpOwogICAgIGlmICghZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4
dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+
KCksIEdseXBoT3ZlcmZsb3coKSkpLmZpcnN0OworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVU
ZXh0Qm94KHJ1bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4oKSwgR2x5cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CiAgICAgICAgIEFTU0VSVChpdC0+c2Vj
b25kLmZpcnN0LmlzRW1wdHkoKSk7CiAgICAgICAgIGNvcHlUb1ZlY3RvcihmYWxsYmFja0ZvbnRz
LCBpdC0+c2Vjb25kLmZpcnN0KTsKICAgICAgICAgcnVuLT5tX2JveC0+cGFyZW50KCktPmNsZWFy
RGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpOwogICAgIH0KICAgICBp
ZiAoKGdseXBoT3ZlcmZsb3cudG9wIHx8IGdseXBoT3ZlcmZsb3cuYm90dG9tIHx8IGdseXBoT3Zl
cmZsb3cubGVmdCB8fCBnbHlwaE92ZXJmbG93LnJpZ2h0KSkgewogICAgICAgICBBU1NFUlQocnVu
LT5tX2JveC0+aXNUZXh0KCkpOwotICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1
bi0+bV9ib3gpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5
cGhPdmVyZmxvdygpKSkuZmlyc3Q7CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRCb3go
cnVuLT5tX2JveCksIG1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBH
bHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgaXQtPnNlY29uZC5zZWNvbmQgPSBn
bHlwaE92ZXJmbG93OwogICAgICAgICBydW4tPm1fYm94LT5jbGVhcktub3duVG9IYXZlTm9PdmVy
ZmxvdygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAKaW5kZXggOGMxYjZiZjE5YjczYTU4YjA0NzI4OGU5NTVhNTlkNjU1
ZjI2M2E5Yi4uZGFiNWQ3YjIxZTdhZTlmMGRkOWMwMGE1ODc0MDJhZGExYWM3ZmMwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAK
QEAgLTIxNyw4ICsyMTcsOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZh
bGlkUmVnaW9ucygpCiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGREZXBlbmRlbmN5
T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCogb3RoZXJGbG93VGhyZWFkKQogewot
ICAgIHN0ZDo6cGFpcjxSZW5kZXJOYW1lZEZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciwg
Ym9vbD4gcmVzdWx0ID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmFkZChvdGhlckZsb3dUaHJl
YWQpOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFk
Q291bnRlZFNldDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbGF5b3V0QmVmb3JlVGhyZWFkc1NldC5h
ZGQob3RoZXJGbG93VGhyZWFkKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSBzZWUgdGhpcyBkZXBlbmRlbmN5LiBNYWtl
IHN1cmUgd2UgcmVjYWxjdWxhdGUgYWxsIHRoZSBkZXBlbmRlbmNpZXMuCiAgICAgICAgIHZpZXco
KS0+c2V0SXNSZW5kZXJOYW1lZEZsb3dUaHJlYWRPcmRlckRpcnR5KHRydWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggY2NlMjVhNzQ3ZjI1
OGI0MzI4NWFiODI5OTg1MzRhMjc2MzA0YWRmMS4uZGU5OGZmODkxODg0NTQ0MTg2YTY4NzY0NTVk
OTM3MzJmZWQwMTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5j
cHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJSZWdpb246
OnNldFJlbmRlckJveFJlZ2lvbkluZm8oY29uc3QgUmVuZGVyQm94KiBib3gsCiAgICAgaWYgKCFt
X2lzVmFsaWQgfHwgIW1fZmxvd1RocmVhZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25Q
dHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8u
YWRkKGJveCwgbnVsbHB0cikuZmlyc3QtPnNlY29uZDsKKyAgICBPd25QdHI8UmVuZGVyQm94UmVn
aW9uSW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgbnVsbHB0
cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoYm94SW5mbykKICAgICAgICAgKmJveEluZm8g
PSBSZW5kZXJCb3hSZWdpb25JbmZvKGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0
LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCmluZGV4IDkwN2ZlMTY3N2IxNzA0ODJjNmY0YWM1N2VkOTcxZDU3MjE5MWFlNDEuLmY4ZjQ5
M2RiODVhMGRkYjdhNjljMWYxNmNiMTc1ZjcwYWQ5ZGNiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cApAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBw
bHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKGdy
YWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBPd25QdHI8R3JhZGllbnREYXRhPiYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVu
dE1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxHcmFk
aWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZChvYmplY3QsIG51bGxw
dHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCiAgICAgICAgIGdy
YWRpZW50RGF0YSA9IGFkb3B0UHRyKG5ldyBHcmFkaWVudERhdGEpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAKaW5kZXggYmVjMGYzMzc0ZjQ2NDM2MmE5YTU4M2VhZjE5ODM1MDI4MWI4ZDAyYy4uNGRjNTAx
YjgwNmIzZDhkZjI1NDc0NTQzYmNmY2ZmMzg3NjBkNjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApA
QCAtODMsNyArODMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgaWYgKG1fYXR0cmli
dXRlcy5wYXR0ZXJuVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8UGF0dGVybkRhdGE+JiBwYXR0ZXJuRGF0YSA9IG1fcGF0
dGVybk1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIE93blB0cjxQ
YXR0ZXJuRGF0YT4mIHBhdHRlcm5EYXRhID0gbV9wYXR0ZXJuTWFwLmFkZChvYmplY3QsIG51bGxw
dHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFwYXR0ZXJuRGF0YSkKICAgICAgICAgcGF0
dGVybkRhdGEgPSBhZG9wdFB0cihuZXcgUGF0dGVybkRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlTWFwLmNwcAppbmRleCA0OGRiNjk4MDMyMjJhNGNiMzlhZDFhODUwMGZhNmM2Mzg0
ODIwNjg5Li44ZTQyZDJmMTc2ZGQzYjExMTJhMDFhNTFkOGRiNjJmNGIzOGJiYTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTEzMSw5ICsxMzEsOSBAQCBQYXNzUmVm
UHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnNldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdQogICAgIH0KICAgICBtX2N1cnJlbnRMZW5ndGggPSBuZXdMZW5ndGg7
CiAKLSAgICBwYWlyPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciwgYm9vbD4gYWRk
UmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29u
ZCkKLSAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSB2YWx1ZTsKKyAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIHZh
bHVlKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnNlY29uZCA9IHZhbHVlOwogCiAgICAgaW52YWxpZGF0ZUl0ZXJhdG9yKCk7CiAK
QEAgLTE3MSw4ICsxNzEsOCBAQCB2b2lkIFN0b3JhZ2VNYXA6OmltcG9ydEl0ZW0oY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQmUgc3VyZSB0byBjb3B5
IHRoZSBrZXlzL3ZhbHVlcyBhcyBpdGVtcyBpbXBvcnRlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFk
IGFyZSBkZXN0aW5lZAogICAgIC8vIHRvIGNyb3NzIGEgdGhyZWFkIGJvdW5kYXJ5Ci0gICAgcGFp
cjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFw
LmFkZChrZXkuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7ICAvLyBUcnVlIGlmIHRoZSBrZXkgZGlk
bid0IGV4aXN0IHByZXZpb3VzbHkuCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OkFkZFJl
c3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5Lmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRl
ZENvcHkoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsg
Ly8gVHJ1ZSBpZiB0aGUga2V5IGRpZG4ndCBleGlzdCBwcmV2aW91c2x5LgogCiAgICAgQVNTRVJU
KG1fY3VycmVudExlbmd0aCArIGtleS5sZW5ndGgoKSA+PSBtX2N1cnJlbnRMZW5ndGgpOwogICAg
IG1fY3VycmVudExlbmd0aCArPSBrZXkubGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDgxMGI5NjY1YzFmYTgyMGUwMTk1NGY3MWYx
N2FlYzc3ZTU1ZGQyNWYuLjNmNTk3MDViMTcxNTQzN2JiYjc3NWU4OWMzYjQ5MjQwMzBiNjgzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0y
MTMsOSArMjEzLDkgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNv
dXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTVkdTdHlsZWQKIAogICAgIC8vIFRoZSBIYXNo
TWFwIGFkZCBmdW5jdGlvbiBsZWF2ZXMgdGhlIG1hcCBhbG9uZSBhbmQgcmV0dXJucyBhIHBvaW50
ZXIgdG8gdGhlIGVsZW1lbnQgaW4gdGhlCiAgICAgLy8gbWFwIGlmIHRoZSBlbGVtZW50IGFscmVh
ZHkgZXhpc3RzLiBTbyB3ZSBhZGQgd2l0aCBhIHZhbHVlIG9mIDAsIGFuZCBpdCBlaXRoZXIgZmlu
ZHMgdGhlCi0gICAgLy8gZXhpc3RpbmcgZWxlbWVudCBvciBhZGRzIGEgbmV3IG9uZSBpbiBhIHNp
bmdsZSBvcGVyYXRpb24uIFRoZSAiLmZpcnN0LT5zZWNvbmQiIGlkaW9tIGdldHMKKyAgICAvLyBl
eGlzdGluZyBlbGVtZW50IG9yIGFkZHMgYSBuZXcgb25lIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4g
VGhlICIuaXRlcmF0b3ItPnNlY29uZCIgaWRpb20gZ2V0cwogICAgIC8vIHVzIHRvIHRoZSBpdGVy
YXRvciBmcm9tIGFkZCdzIHJlc3VsdCwgYW5kIHRoZW4gdG8gdGhlIHZhbHVlIGluc2lkZSB0aGUg
aGFzaCB0YWJsZS4KLSAgICBTVkdQZW5kaW5nRWxlbWVudHMqJiBzZXQgPSBtX3BlbmRpbmdSZXNv
dXJjZXMuYWRkKGlkLCAwKS5maXJzdC0+c2Vjb25kOworICAgIFNWR1BlbmRpbmdFbGVtZW50cyom
IHNldCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgaWYgKCFzZXQpCiAgICAgICAgIHNldCA9IG5ldyBTVkdQZW5kaW5nRWxlbWVudHM7CiAgICAg
c2V0LT5hZGQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRl
eCA3MTIyMDBjZTY5M2M5ZDVkYWIxODBhMDcxNWZlYjdhMWY5ZjYzNTMzLi5hNzFjNDQ1NTUzODdm
NWZmODY4NDQzNTI5ODc0MjQ0NDJjNjg4NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKQEAgLTg5OSw5ICs4OTksOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1
ZXN0SGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YQogCiB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHBhaXI8SFRUUEhlYWRl
ck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUs
IHZhbHVlKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kICs9ICIsICIgKyB2YWx1ZTsKKyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9yZXF1ZXN0SGVhZGVycy5hZGQobmFtZSwgdmFsdWUpOworICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICIsICIgKyB2
YWx1ZTsKIH0KIAogU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwCmluZGV4IDE1NGI2N2U5MmQzMmM3ZDE3NmJjYjgxMDkwZThkZjQxOThiNGIwMGEuLjcwN2Nj
N2ZjZTJjNzM2MThlODI5ODZkZDZiOTZjNWZlZjczOThlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRnVuY3Rpb25zLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIFZhbHVlIEZ1bklkOjpldmFsdWF0
ZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzZXZlcmFsIG5vZGVzIHdpdGggdGhl
IHNhbWUgaWQsIGlkKCkgc2hvdWxkIHJldHVybiB0aGUgZmlyc3Qgb25lLgogICAgICAgICAvLyBJ
biBXZWJLaXQsIGdldEVsZW1lbnRCeUlkIGJlaGF2ZXMgc28sIHRvbywgYWx0aG91Z2ggaXRzIGJl
aGF2aW9yIGluIHRoaXMgY2FzZSBpcyBmb3JtYWxseSB1bmRlZmluZWQuCiAgICAgICAgIE5vZGUq
IG5vZGUgPSBjb250ZXh0U2NvcGUtPmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZExpc3QuY2hhcmFj
dGVycygpICsgc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgIGlmIChub2Rl
ICYmIHJlc3VsdFNldC5hZGQobm9kZSkuc2Vjb25kKQorICAgICAgICBpZiAobm9kZSAmJiByZXN1
bHRTZXQuYWRkKG5vZGUpLmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5v
ZGUpOwogICAgICAgICAKICAgICAgICAgc3RhcnRQb3MgPSBlbmRQb3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhdGguY3BwCmluZGV4IGQ5ZDFmZDQ3ZDY2NGYwYzliZGYxNDZhYzIxZGQ5M2FkZmFiNGEyMDQu
LmJhMWRlZDM5ZTE4NGEwM2U1ZTE4MzU1M2Q4MGVkNmNhZGZlY2ZhYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFBhdGguY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBMb2NhdGlvblBhdGg6OmV2YWx1
YXRlKE5vZGVTZXQmIG5vZGVzKSBjb25zdAogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBub2Rl
SW5kZXggPSAwOyBub2RlSW5kZXggPCBtYXRjaGVzLnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbWF0Y2hlc1tub2RlSW5kZXhdOwotICAgICAgICAg
ICAgICAgIGlmICghbmVlZFRvQ2hlY2tGb3JEdXBsaWNhdGVOb2RlcyB8fCBuZXdOb2Rlc1NldC5h
ZGQobm9kZSkuc2Vjb25kKQorICAgICAgICAgICAgICAgIGlmICghbmVlZFRvQ2hlY2tGb3JEdXBs
aWNhdGVOb2RlcyB8fCBuZXdOb2Rlc1NldC5hZGQobm9kZSkuaXNOZXdFbnRyeSkKICAgICAgICAg
ICAgICAgICAgICAgbmV3Tm9kZXMuYXBwZW5kKG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCA1OGNkODc5OGViMzYz
YWViYjZiNDhjMzM5NTY3MDBmZjEwNzVhNTc3Li4zNjgwMGExMTc0MTZkMDcyNmEyYWIyMjI4OTk3
YTBiZmIxYzg5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBWYWx1ZSBVbmlvbjo6ZXZhbHVhdGUoKSBjb25zdAogICAgIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmhzTm9kZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9k
ZSogbm9kZSA9IHJoc05vZGVzW2ldOwotICAgICAgICBpZiAobm9kZXMuYWRkKG5vZGUpLnNlY29u
ZCkKKyAgICAgICAgaWYgKG5vZGVzLmFkZChub2RlKS5pc05ld0VudHJ5KQogICAgICAgICAgICAg
cmVzdWx0U2V0LmFwcGVuZChub2RlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCmluZGV4IGUzZGNlOGM1YWM0ZDZmNmNlNDc2OThl
MmYzYTcxMjUyNjEyMmM3NTkuLjNjMGNmMTVkNWM5YzczYWM2NTc4YzliYTc3NmNlOWJlOTM0YWVl
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNw
cApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgV2ViSFRUUExvYWRJbmZvOjpzZXRFbmNvZGVkRGF0
YUxlbmd0aChsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgpCiAKIHN0YXRpYyB2b2lkIGFkZEhl
YWRlcihIVFRQSGVhZGVyTWFwKiBtYXAsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtYXAtPmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25k
KQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCArPSAiLCAiICsgU3RyaW5nKHZhbHVlKTsK
KyAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFs
dWUpOworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kICs9ICIsICIgKyBTdHJpbmcodmFsdWUpOwogfQogCiB2b2lkIFdlYkhUVFBMb2Fk
SW5mbzo6YWRkUmVxdWVzdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVUkxSZXNwb25z
ZS5jcHAKaW5kZXggZWMyMTJlNTE3N2NjNTg2MzhjZTAxNzJjNzVmMTA4ZDNmMzc1MmQzYi4uMDdk
NWE0NWY4OGNlOWM4YTM0Mzc0OTMzYzJiNDM3NjllNGEwMDc3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjUwLDEwICsyNTAsMTAgQEAg
dm9pZCBXZWJVUkxSZXNwb25zZTo6YWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJgogICAgIC8vIEZJWE1FOiBBZGQgYW4gYWRkSFRUUEhlYWRl
ckZpZWxkIG1ldGhvZCB0byBSZXNvdXJjZVJlc3BvbnNlLgogICAgIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG1hcCA9IG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlc3BvbnNlLT5odHRwSGVhZGVyRmllbGRz
KCk7CiAgICAgU3RyaW5nIHZhbHVlU3RyKHZhbHVlKTsKLSAgICBwYWlyPEhUVFBIZWFkZXJNYXA6
Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPQorICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPQogICAgICAgICBjb25zdF9jYXN0PEhUVFBIZWFkZXJNYXAqPigmbWFwKS0+YWRkKG5h
bWUsIHZhbHVlU3RyKTsKLSAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCi0gICAgICAgIHJlc3VsdC5m
aXJzdC0+c2Vjb25kICs9ICIsICIgKyB2YWx1ZVN0cjsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCAiICsgdmFsdWVTdHI7
CiB9CiAKIHZvaWQgV2ViVVJMUmVzcG9uc2U6OmNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGNlNDBmNDgwMjYx
MTRiYTgwNjBlYWQ4MjViMjg3YjM0MDYwNDU3MTYuLmM1MTBhOWE5M2Q1YjE3NDMxMWUyZDczMzBm
MjFiNTk0YmEwNTcyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtNjksMTUgKzY5
LDE1IEBAIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6On5OZXRzY2FwZVBsdWdpbkhvc3RNYW5h
Z2VyKCkKIAogTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFn
ZXI6Omhvc3RGb3JQbHVnaW4oY29uc3QgV1RGOjpTdHJpbmcmIHBsdWdpblBhdGgsIGNwdV90eXBl
X3QgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCiB7
Ci0gICAgcGFpcjxQbHVnaW5Ib3N0TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wbHVn
aW5Ib3N0cy5hZGQocGx1Z2luUGF0aCwgMCk7CisgICAgUGx1Z2luSG9zdE1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fcGx1Z2luSG9zdHMuYWRkKHBsdWdpblBhdGgsIDApOwogICAgIAogICAgIC8v
IFRoZSBwYWNrYWdlIHdhcyBhbHJlYWR5IGluIHRoZSBtYXAsIGp1c3QgcmV0dXJuIGl0LgotICAg
IGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5maXJzdC0+c2Vjb25k
OworICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZDsKICAgICAgICAgCiAgICAgbWFjaF9wb3J0X3QgY2xpZW50UG9ydDsKICAg
ICBpZiAobWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmY2xpZW50UG9ydCkgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIG1fcGx1
Z2luSG9zdHMucmVtb3ZlKHJlc3VsdC5maXJzdCk7CisgICAgICAgIG1fcGx1Z2luSG9zdHMucmVt
b3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAg
LTg1LDcgKzg1LDcgQEAgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXI6Omhvc3RGb3JQbHVnaW4oY29uc3QgV1RGOjpTdHIKICAgICBQcm9jZXNzU2VyaWFs
TnVtYmVyIHBsdWdpbkhvc3RQU047CiAgICAgaWYgKCFzcGF3blBsdWdpbkhvc3QocGx1Z2luUGF0
aCwgcGx1Z2luQXJjaGl0ZWN0dXJlLCBjbGllbnRQb3J0LCBwbHVnaW5Ib3N0UG9ydCwgcGx1Z2lu
SG9zdFBTTikpIHsKICAgICAgICAgbWFjaF9wb3J0X2Rlc3Ryb3kobWFjaF90YXNrX3NlbGYoKSwg
Y2xpZW50UG9ydCk7Ci0gICAgICAgIG1fcGx1Z2luSG9zdHMucmVtb3ZlKHJlc3VsdC5maXJzdCk7
CisgICAgICAgIG1fcGx1Z2luSG9zdHMucmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTk1LDcgKzk1LDcgQEAgTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkqIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6Omhvc3RGb3JQbHVnaW4oY29uc3Qg
V1RGOjpTdHIKICAgICAKICAgICBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eSogaG9zdFByb3h5ID0g
bmV3IE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KGNsaWVudFBvcnQsIHBsdWdpbkhvc3RQb3J0LCBw
bHVnaW5Ib3N0UFNOLCBzaG91bGRDYWNoZU1pc3NpbmdQcm9wZXJ0aWVzQW5kTWV0aG9kcyk7CiAg
ICAgCi0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBob3N0UHJveHk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBob3N0UHJveHk7CiAgICAgCiAgICAgcmV0dXJuIGhvc3RQcm94eTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tCmluZGV4IGEzOTY2OWNhNTAzZDNjZDdjYzg3ODgwMmVjYmMzYmZhOGEyODFhNTkuLjA5NDQz
ZGMxNjI4YTY2OGYyZmIyMTRmM2I1MzE3YzZiNTQ0NDQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzc2LDEzICszNzYs
MTMgQEAgTWV0aG9kTGlzdCBQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIAogICAgIC8v
IEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hp
bGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCi0gICAgcGFpcjxNZXRob2RNYXA6Oml0ZXJhdG9y
LCBib29sPiBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAw
KTsKLSAgICBpZiAobWFwQWRkUmVzdWx0LnNlY29uZCAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAg
ICAgIG1hcEFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IFByb3h5TWV0aG9kKG1ldGhvZE5h
bWUpOworICAgIE1ldGhvZE1hcDo6QWRkUmVzdWx0IG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5h
ZGQoaWRlbnRpZmllci5pbXBsKCksIDApOworICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRy
eSAmJiByZXBseS0+bV9yZXN1bHQpCisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gbmV3IFByb3h5TWV0aG9kKG1ldGhvZE5hbWUpOwogCiAgICAgTWV0aG9kTGlzdCBtZXRo
b2RMaXN0OwotICAgIGlmIChtYXBBZGRSZXN1bHQuZmlyc3QtPnNlY29uZCkKLSAgICAgICAgbWV0
aG9kTGlzdC5hcHBlbmQobWFwQWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQpOworICAgIGlmIChtYXBB
ZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCkKKyAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQobWFw
QWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgIHJldHVybiBtZXRob2RMaXN0OwogfQog
CkBAIC00MTIsMTAgKzQxMiwxMCBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAg
ICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVk
IHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgotICAgIHBhaXI8RmllbGRNYXA6Oml0ZXJh
dG9yLCBib29sPiBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQoaWRlbnRpZmllci5pbXBsKCks
IDApOwotICAgIGlmIChtYXBBZGRSZXN1bHQuc2Vjb25kICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAg
ICAgICAgbWFwQWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgUHJveHlGaWVsZChwcm9wZXJ0
eU5hbWUpOwotICAgIHJldHVybiBtYXBBZGRSZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICBGaWVs
ZE1hcDo6QWRkUmVzdWx0IG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChpZGVudGlmaWVyLmlt
cGwoKSwgMCk7CisgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jl
c3VsdCkKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgUHJveHlG
aWVsZChwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogSlNDOjpKU1ZhbHVlIFByb3h5SW5zdGFuY2U6OmZpZWxkVmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KaW5k
ZXggYjBmZmRmZDhmODUyOGNiNTZhMzc4ZTljYWM3ZTQ5MmY3Yjk5YWYzYi4uODEyMDkzNjAxNjM3
NDliNzY2ZmM3YjhkM2Q3MDYwMjdjYjI3ZDZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQpAQCAtNzEs
NyArNzEsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKICAgICBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiB3ZWJOb3RpZmlj
YXRpb24gPSBhZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uIGFsbG9jXSBpbml0V2l0aENvcmVOb3Rp
ZmljYXRpb246bm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5vdGlmaWNhdGlvbklEXSk7CiAg
ICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgd2ViTm90aWZpY2F0aW9uKTsK
IAotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRp
b25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
VmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+ID4oKSkuZmlyc3Q7CisgICAgTm90aWZp
Y2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAu
YWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8UmV0YWlu
UHRyPFdlYk5vdGlmaWNhdGlvbj4gPigpKS5pdGVyYXRvcjsKICAgICBpdC0+c2Vjb25kLmFwcGVu
ZCh3ZWJOb3RpZmljYXRpb24pOwogCiAgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3Zp
ZGVyXSBzaG93Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbi5nZXQoKSBmcm9tV2ViVmlldzpt
X3dlYlZpZXddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKaW5kZXggYzQ0NTBmNzQ5ZWUx
ZmE5NjQ1YTYxMzBlYzhiYzNiZWY5NTQ0YTE0YS4uOWM5Y2MwMjZiNDdiNGZlYTk2MGM2Mzk4NDZl
MGViYTUxYzQ2NTNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJ
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEkuY3BwCkBAIC01MSwxMCAr
NTEsOSBAQCBzdGF0aWMgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+IGNsYXNzRmFjdG9yeShjb25zdCBD
TFNJRCYgY2xzaWQpCiAgICAgdHlwZWRlZiBIYXNoTWFwPENMU0lELCBDT01QdHI8SUNsYXNzRmFj
dG9yeT4sIENMU0lESGFzaCwgQ0xTSURIYXNoVHJhaXRzPiBGYWN0b3J5TWFwOwogICAgIHN0YXRp
YyBGYWN0b3J5TWFwJiBmYWN0b3JpZXMgPSAqbmV3IEZhY3RvcnlNYXA7CiAKLSAgICBwYWlyPEZh
Y3RvcnlNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAw
KTsKLSAgICBDT01QdHI8SUNsYXNzRmFjdG9yeT4mIGZhY3RvcnkgPSByZXN1bHQuZmlyc3QtPnNl
Y29uZDsKLSAgICBib29sIGFkZGVkID0gcmVzdWx0LnNlY29uZDsKLSAgICBpZiAoYWRkZWQgJiYg
RkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihmYWN0b3J5KSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQorICAgIEZhY3RvcnlNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBmYWN0b3JpZXMuYWRkKGNsc2lkLCAwKTsKKyAgICBDT01QdHI8SUNsYXNzRmFj
dG9yeT4mIGZhY3RvcnkgPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKKyAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkgJiYgRkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihm
YWN0b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQogICAgICAgICBm
YWN0b3J5ID0gMDsKIAogICAgIHJldHVybiBmYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGEyZmZhMGYyNTBiZTg5MDYx
MjQwNzFjZDQ4MjlkNzg4YjdiOGFmMzguLjA3MGY0NTgzMDc5ZjdiNGVlYmZjZjRhMmE4ODg0Nzg2
ZDhjNTU0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQog
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoa2V5LCB2
YWx1ZSkuc2Vjb25kKSB7CisgICAgICAgICAgICBpZiAoIXRlbXBIYXNoTWFwLmFkZChrZXksIHZh
bHVlKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFwIGFscmVh
ZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgogICAgICAgICAgICAgICAgIGRlY29kZXIt
Pm1hcmtJbnZhbGlkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggM2MyZjE0Y2Vk
MDNlOGYwOWJmMDUzOTY4ODliMTg0ZWY4Yjg1YzU5ZS4uZjdjMzcyM2Y3ZWY3ZGQyMjkxZWE1OTE1
MDYwMDkzZGMxYzQxOGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBwcml2YXRlOgogUGFzc1JlZlB0
cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQogewogICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAgcGFpcjxTeW5jTWVzc2FnZVN0
YXRlTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFk
ZChydW5Mb29wLCAwKTsKKyAgICBTeW5jTWVzc2FnZVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCAwKTsKIAotICAgIGlmICghcmVz
dWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkgeworICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgUmVmUHRyPFN5
bmNNZXNzYWdlU3RhdGU+IHN5bmNNZXNzYWdlU3RhdGUgPSBhZG9wdFJlZihuZXcgU3luY01lc3Nh
Z2VTdGF0ZShydW5Mb29wKSk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBzeW5jTWVzc2Fn
ZVN0YXRlLmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gc3luY01lc3NhZ2VT
dGF0ZS5nZXQoKTsKIAogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJlbGVhc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9NdXRhYmxlRGljdGlvbmFyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3BwCmluZGV4IDJmOTA1
ZWM2YTEyNDg3MGQ4OTdiYTM3MDA0YmU4Y2FkMmZiMmMxNzQuLmFjNjliNzZhM2IyNGFmN2VjMTZh
ZTk3NzM3OWM1MWE2ZTNkZTNkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9N
dXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL011dGFibGVE
aWN0aW9uYXJ5LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIE11dGFibGVEaWN0aW9uYXJ5Ojp+TXV0
YWJsZURpY3Rpb25hcnkoKQogCiBib29sIE11dGFibGVEaWN0aW9uYXJ5OjphZGQoY29uc3QgU3Ry
aW5nJiBrZXksIEFQSU9iamVjdCogaXRlbSkKIHsKLSAgICBzdGQ6OnBhaXI8TWFwVHlwZTo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOwotICAgIHJldHVybiBy
ZXN1bHQuc2Vjb25kOworICAgIE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQo
a2V5LCBpdGVtKTsKKyAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKIGJvb2wgTXV0
YWJsZURpY3Rpb25hcnk6OnNldChjb25zdCBTdHJpbmcmIGtleSwgQVBJT2JqZWN0KiBpdGVtKQog
ewotICAgIHN0ZDo6cGFpcjxNYXBUeXBlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9tYXAu
c2V0KGtleSwgaXRlbSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5zZWNvbmQ7CisgICAgTWFwVHlwZTo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOworICAgIHJldHVybiByZXN1
bHQuaXNOZXdFbnRyeTsKIH0KIAogdm9pZCBNdXRhYmxlRGljdGlvbmFyeTo6cmVtb3ZlKGNvbnN0
IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaApp
bmRleCA5NjcyZjI4ZGYzN2FhYjkxMWZkYzI4MWJlMmM2ODIwMDA1YzJhYmYxLi5hY2U3MmZkMmUz
M2UzYmMxMTdmYzJmYTQ1NWYxNWQ4Nzc3ZmMwMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VXNlck1lc3NhZ2VDb2RlcnMuaApAQCAtMjg1LDggKzI4NSw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShtZXNzYWdlQ29kZXIpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8SW1tdXRh
YmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1hcC5zZXQo
a2V5LCBlbGVtZW50LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc2Vj
b25kKQorICAgICAgICAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OkFkZFJl
c3VsdCByZXN1bHQgPSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9Db21tYW5kTGluZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nv
bW1hbmRMaW5lTWFjLmNwcAppbmRleCBkNDhhNDAxMjhlYjg4MDMzMjQ2YzNiZmRiN2RmMWJkYjc5
YTgzY2EyLi41MDAxOTgxMzRiNjI0MWZkOTkyODA1ZjdhNTY1YTk0MGI0YmI1Yzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NvbW1hbmRMaW5lTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NvbW1hbmRMaW5lTWFjLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBib29sIENvbW1hbmRMaW5lOjpwYXJzZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAg
ICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAotICAgICAgICBpZiAoIW1fYXJncy5hZGQoa2V5LCB2YWx1ZSkuc2Vjb25kKQorICAgICAg
ICBpZiAoIW1fYXJncy5hZGQoa2V5LCB2YWx1ZSkuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggMTNhZWZiODJiZDEyZDk2NWZhNTA3NDE2NmE3
ZGQ1MTM5Y2U1ZTJiZS4uMzEyNThmMjAxYjk4MjY4NDAzOTA0OGI0MDhjNmIzNzA0NTcwYTg1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1Zp
ZXcubW0KQEAgLTIyOCw4ICsyMjgsOCBAQCBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvUERGKFdL
RGF0YVJlZiBkYXRhUmVmLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dAogICAgICAg
ICAgICAgQVNTRVJUKFt2aWV3IF9pc1ByaW50aW5nUHJldmlld10pOwogCiAgICAgICAgICAgICBp
ZiAoZGF0YSkgewotICAgICAgICAgICAgICAgIHBhaXI8SGFzaE1hcDxXZWJDb3JlOjpJbnRSZWN0
LCBWZWN0b3I8dWludDhfdD4gPjo6aXRlcmF0b3IsIGJvb2w+IGVudHJ5ID0gdmlldy0+X3BhZ2VQ
cmV2aWV3cy5hZGQoaXRlci0+c2Vjb25kLCBWZWN0b3I8dWludDhfdD4oKSk7Ci0gICAgICAgICAg
ICAgICAgZW50cnkuZmlyc3QtPnNlY29uZC5hcHBlbmQoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFdlYkNvcmU6OkludFJlY3QsIFZlY3Rvcjx1
aW50OF90PiA+OjpBZGRSZXN1bHQgZW50cnkgPSB2aWV3LT5fcGFnZVByZXZpZXdzLmFkZChpdGVy
LT5zZWNvbmQsIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICAgICAgICAgICAgICBlbnRyeS5pdGVy
YXRvci0+c2Vjb25kLmFwcGVuZChkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgdmlldy0+X2V4cGVjdGVkUHJldmlld0NhbGxiYWNrcy5yZW1v
dmUoY29udGV4dC0+Y2FsbGJhY2tJRCk7CiAgICAgICAgICAgICBib29sIHJlY2VpdmVkUmVzcG9u
c2VUb0xhdGVzdFJlcXVlc3QgPSB2aWV3LT5fbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2sg
PT0gY29udGV4dC0+Y2FsbGJhY2tJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQppbmRleCA3Zjk1NzlhNjJhNzc5MDgzZjJhZmEzNmIzYTI2M2QxYmQ4MTMzOTVj
Li42MWUzYjYwNzVkNDA4MjVjYTNlYTc2M2M4MDBjYTZlYjFjMjE4NWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC03MjEsOSArNzIxLDkgQEAgc3Rh
dGljIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soV0tTdHJpbmdSZWYgY29tbWFuZE5hbWUs
IGJvb2wgaXNFbmFibGVkLCBpbnQKICAgICAgICAgcmV0dXJuIFlFUzsKIAogICAgIC8vIEFkZCB0
aGlzIGl0ZW0gdG8gdGhlIHZlY3RvciBvZiBpdGVtcyBmb3IgYSBnaXZlbiBjb21tYW5kIHRoYXQg
YXJlIGF3YWl0aW5nIHZhbGlkYXRpb24uCi0gICAgcGFpcjxWYWxpZGF0aW9uTWFwOjppdGVyYXRv
ciwgYm9vbD4gYWRkUmVzdWx0ID0gX2RhdGEtPl92YWxpZGF0aW9uTWFwLmFkZChjb21tYW5kTmFt
ZSwgVmFsaWRhdGlvblZlY3RvcigpKTsKLSAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5hcHBl
bmQoaXRlbSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICBWYWxpZGF0aW9uTWFw
OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gX2RhdGEtPl92YWxpZGF0aW9uTWFwLmFkZChjb21tYW5k
TmFtZSwgVmFsaWRhdGlvblZlY3RvcigpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC5hcHBlbmQoaXRlbSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IC8vIElmIHdlIGFyZSBub3QgYWxyZWFkeSBhd2FpdGluZyB2YWxpZGF0aW9uIGZvciB0aGlzIGNv
bW1hbmQsIHN0YXJ0IHRoZSBhc3luY2hyb25vdXMgdmFsaWRhdGlvbiBwcm9jZXNzLgogICAgICAg
ICAvLyBGSVhNRTogVGhlb3JldGljYWxseSwgdGhlcmUgaXMgYSByYWNlIGhlcmU7IHdoZW4gd2Ug
Z2V0IHRoZSBhbnN3ZXIgaXQgbWlnaHQgYmUgb2xkLCBmcm9tIGEgcHJldmlvdXMgdGltZQogICAg
ICAgICAvLyB3ZSBhc2tlZCBmb3IgdGhlIHNhbWUgY29tbWFuZDsgdGhlcmUgaXMgbm8gZ3VhcmFu
dGVlIHRoZSBhbnN3ZXIgaXMgc3RpbGwgdmFsaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDljZTU0NDA3ZTU2OWQ1MDMwZjgxZGFiYTFlZmRj
Yjk5YmZiMGEwZjkuLmU4ZGZkODE2OGM3YTI3MTI2NGFjZjVjNzFkZDkwMmMwYTc0NTViODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yNzEs
MTggKzI3MSwxNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKHVp
bnQ2NF90IGl0ZW1JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbAogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKG9yaWdpbmFsVVJMKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwogCi0gICAgc3Rk
OjpwYWlyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQg
PSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgMCk7Ci0gICAgaWYgKHJlc3Vs
dC5zZWNvbmQpIHsKLSAgICAgICAgLy8gTmV3IGl0ZW0uCi0gICAgICAgIHJlc3VsdC5maXJzdC0+
c2Vjb25kID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCB1cmws
IHRpdGxlLCBiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpLCBp
dGVtSUQpOworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgMCk7CisgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKG9yaWdpbmFsVVJMLCB1cmwsIHRpdGxlLCBiYWNrRm9y
d2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpLCBpdGVtSUQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIGl0ZW0uCi0gICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQtPnNldE9yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKTsKLSAgICByZXN1
bHQuZmlyc3QtPnNlY29uZC0+c2V0VVJMKHVybCk7Ci0gICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQt
PnNldFRpdGxlKHRpdGxlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZC0+c2V0QmFja0Zvcndh
cmREYXRhKGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3YXJkRGF0YS5zaXplKCkpOwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5zZXRPcmlnaW5hbFVSTChvcmlnaW5hbFVSTCk7
CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldFVSTCh1cmwpOworICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kLT5zZXRUaXRsZSh0aXRsZSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQtPnNldEJhY2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9y
d2FyZERhdGEuc2l6ZSgpKTsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNlYmJiMzBj
MWFmM2I0ZDljMWQyMzliMDhmYmY0ZTVhZTc2ZWY0NmUuLjdkNzMwNWVkYmMzMGNkZTA5MWZhZmNm
M2VjOWMzMjBlNThjNmUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcApAQCAtNjcsMTIgKzY3LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKE5vZGUq
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjxET01I
YW5kbGVDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRk
KG5vZGUsIDApOwotICAgIGlmICghcmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmV0dXJuIFBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPihyZXN1bHQuZmlyc3QtPnNlY29uZCk7Cisg
ICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFk
ZChub2RlLCAwKTsKKyAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4g
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kKTsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUg
PSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNyZWF0ZShub2RlKTsKLSAgICByZXN1bHQuZmly
c3QtPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQgPSBub2RlSGFuZGxlLmdldCgpOwogICAgIHJldHVybiBub2RlSGFuZGxlLnJlbGVhc2UoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApp
bmRleCBlOTRlZGZkMzRiOGI4OWQzNmU5ZDNlN2ZkYjBjNDdhMDA1MjVlMTE5Li4xYjc0ZjAxMjQw
MDhkYjNjMDc4MjhlYTZmNmQyYzA1YWMwNTljMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIFBhc3NSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6
Z2V0T3JDcmVhdGUoUmFuCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBzdGQ6OnBhaXI8RE9NSGFuZGxlQ2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkb21I
YW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7Ci0gICAgaWYgKCFyZXN1bHQuc2Vjb25kKQotICAg
ICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1bHQu
Zmlyc3QtPnNlY29uZCk7CisgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBk
b21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgMCk7CisgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4o
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRl
KHJhbmdlKTsKLSAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJhbmdlSGFuZGxlLmdldCgpOwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gcmFuZ2VIYW5kbGUuZ2V0KCk7CiAgICAgcmV0
dXJuIHJhbmdlSGFuZGxlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCmluZGV4IDI3ZTRjNzJlYTFmNzRkNWUxMTU1NDU0YjhhMzVjOWNhZTM2OWE4ZWMu
LjI2ZTU0MDc0NGJkNTI3NGM5YjZkYWNlZWE1YmY5NGZhM2FlMDQ5NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0
aW9uSUQpOwogICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3Rp
ZmljYXRpb24pOwogICAgIAotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2NF90PigpKS5maXJzdDsKKyAgICBOb3RpZmljYXRp
b25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQo
bm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4o
KSkuaXRlcmF0b3I7CiAgICAgaXQtPnNlY29uZC5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogICAg
IAogICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24t
PmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uVVJMKCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+
cmVwbGFjZUlkKCksIG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGMxYmEwNTBj
ZjZkYTFkN2FhMTYxNzYxNDM3ZjRjNDhkNWFkZTIxZDEuLjJkZmNkZTA4M2I5YzE0YjFjNDExMjYz
YjY2MjMwMzg5ZmUxYmYzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtNTE4LDE2ICs1MTgsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYKIHsKICAg
ICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2lu
Y2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUg
V2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQg
dGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCi0gICAgc3RkOjpwYWlyPEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlPiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlTWFwLmFk
ZChwYWdlSUQsIDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIEFTU0VSVCgh
cmVzdWx0LmZpcnN0LT5zZWNvbmQpOwotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IFdl
YlBhZ2U6OmNyZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlPiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdl
SUQsIDApOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBBU1NFUlQoIXJl
c3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQg
PSBXZWJQYWdlOjpjcmVhdGUocGFnZUlELCBwYXJhbWV0ZXJzKTsKIAogICAgICAgICAvLyBCYWxh
bmNlZCBieSBhbiBlbmFibGVUZXJtaW5hdGlvbiBpbiByZW1vdmVXZWJQYWdlLgogICAgICAgICBk
aXNhYmxlVGVybWluYXRpb24oKTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0LmZpcnN0LT5z
ZWNvbmQpOworICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCkBAIC03MzksMTMgKzcz
OSwxMyBAQCBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKHVpbnQ2
NF90IHBhZ2VHcm91cElEKQogCiBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFn
ZUdyb3VwKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIHBhZ2VHcm91cERhdGEpCiB7Ci0gICAgc3Rk
OjpwYWlyPEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGFnZUdyb3VwTWFwLmFkZChwYWdlR3JvdXBEYXRhLnBh
Z2VHcm91cElELCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkgewotICAgICAgICBBU1NFUlQo
IXJlc3VsdC5maXJzdC0+c2Vjb25kKTsKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBX
ZWJQYWdlR3JvdXBQcm94eTo6Y3JlYXRlKHBhZ2VHcm91cERhdGEpOworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cGFnZUdyb3VwTWFwLmFkZChwYWdlR3JvdXBEYXRhLnBhZ2VHcm91cElELCAwKTsKKyAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJv
eHk6OmNyZWF0ZShwYWdlR3JvdXBEYXRhKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0LmZp
cnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdl
dCgpOwogfQogCiBzdGF0aWMgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAwNTlkZWNhODk2ZGQ4NzVkMGFiNWIzMGQ3YWJlNzA4MTgyMzA0
NjRmLi4yZDA5ODM1OTk2ZDNiZjc0OTIxYWU5ZDI1MWNmODExNjk5MWQ4NDgyIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMDMtMjkgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVp
cmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBIYXNoTWFwPD46OmFkZCBzaG91bGQgcmV0dXJu
IGEgbW9yZSBkZXNjcmlwdGl2ZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgdG8gdXNlIEFkZFJlc3VsdCBpbnN0ZWFkIG9m
IGEgcGFpci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6Okxh
eW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6CisKIDIw
MTItMDMtMjkgIFZpbmVldCBDaGF1ZGhhcnkgIDxyZ2Y3NDhAbW90b3JvbGEuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBjdXN0b20gYmluZGluZ3MgZm9ybSBJbnRlcm5hbHMuaWRsIG9mIGF0dHJpYnV0
ZSB0eXBlIEFycmF5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDkwZTU0MzM0NmQ5NGZjMTZiNmQxNzNiYmQ0NjdhYTc1
MmU1MGNmMTYuLjE4OTkxY2VlYzBhMDA0NWYyZTI3OWE2ZTE5OTVmYzdjYmZkYzhkNGUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTk2Myw3ICs5NjMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBKU09iagogICAgIGlmICgh
d29ybGRJRCkKICAgICAgICAgd29ybGQgPSBbV2ViU2NyaXB0V29ybGQgd29ybGRdOwogICAgIGVs
c2UgewotICAgICAgICBSZXRhaW5QdHI8V2ViU2NyaXB0V29ybGQ+JiB3b3JsZFNsb3QgPSB3b3Js
ZE1hcCgpLmFkZCh3b3JsZElELCAwKS5maXJzdC0+c2Vjb25kOworICAgICAgICBSZXRhaW5QdHI8
V2ViU2NyaXB0V29ybGQ+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgICAgICBpZiAoIXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdv
cmxkU2xvdC5hZG9wdE5TKFtbV2ViU2NyaXB0V29ybGQgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
d29ybGQgPSB3b3JsZFNsb3QuZ2V0KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCA4MDk0MWI4ZTA2NzJkYWY0MDU3
ZTFmZTA3ZmEwMzU4ZTBmYWNiYTFjLi4xYjZhNDE1N2M0OGU2NjY1ZDUzOWNhYzhhZDc4ODA5MzIz
YzcyMGY1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSUQs
IEpTT2JqCiAgICAgICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoX191dWlkb2Yo
V2ViU2NyaXB0V29ybGQpLCAwLCBfX3V1aWRvZih3b3JsZCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPigmd29ybGQpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgQ09NUHRyPElXZWJTY3JpcHRXb3JsZD4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdv
cmxkSUQsIDApLmZpcnN0LT5zZWNvbmQ7CisgICAgICAgIENPTVB0cjxJV2ViU2NyaXB0V29ybGQ+
JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vjb25k
OwogICAgICAgICBpZiAoIXdvcmxkU2xvdCAmJiBGQUlMRUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2Uo
X191dWlkb2YoV2ViU2NyaXB0V29ybGQpLCAwLCBfX3V1aWRvZih3b3JsZFNsb3QpLCByZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJndvcmxkU2xvdCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgd29ybGQgPSB3b3JsZFNsb3Q7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDA1ODM0ODY4NDlkNWM3ZWY1NTRjNjc3YTZjMjNmNGZjOThiOGQxYjkuLmNlYzQzNDRkZDJjZjM0
NTZmN2I1MmQ3N2I5N2QzMGM3ZWQyNTAwZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHUKICAgICBpZiAoIXdv
cmxkSUQpCiAgICAgICAgIHdvcmxkLmFkb3B0KFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3Js
ZCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZj4mIHdvcmxkU2xvdCA9IHdvcmxkTWFwKCkuYWRkKHdvcmxkSUQsIDApLmZpcnN0LT5zZWNv
bmQ7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+JiB3b3JsZFNs
b3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAg
ICBpZiAoIXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdvcmxkU2xvdC5hZG9wdChXS0J1bmRsZVNj
cmlwdFdvcmxkQ3JlYXRlV29ybGQoKSk7CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>